xref: /reactos/sdk/include/crt/stdio.h (revision c2c66aff)
1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the w64 mingw-runtime package.
4  * No warranty is given; refer to the file DISCLAIMER within this package.
5  */
6 #ifndef _INC_STDIO
7 #define _INC_STDIO
8 
9 #include <crtdefs.h>
10 
11 #define __need___va_list
12 #include <stdarg.h>
13 
14 #pragma pack(push,_CRT_PACKING)
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #define BUFSIZ 512
21 #define _NFILE _NSTREAM_
22 #define _NSTREAM_ 512
23 #define _IOB_ENTRIES 20
24 #define EOF (-1)
25 
26 #ifndef _FILE_DEFINED
27   struct _iobuf {
28     char *_ptr;
29     int _cnt;
30     char *_base;
31     int _flag;
32     int _file;
33     int _charbuf;
34     int _bufsiz;
35     char *_tmpfname;
36   };
37   typedef struct _iobuf FILE;
38 #define _FILE_DEFINED
39 #endif
40 
41 #ifdef _POSIX_
42 #define _P_tmpdir "/"
43 #define _wP_tmpdir L"/"
44 #else
45 #define _P_tmpdir "\\"
46 #define _wP_tmpdir L"\\"
47 #endif
48 
49 #define L_tmpnam (sizeof(_P_tmpdir) + 12)
50 
51 #ifdef _POSIX_
52 #define L_ctermid 9
53 #define L_cuserid 32
54 #endif
55 
56 #define SEEK_CUR 1
57 #define SEEK_END 2
58 #define SEEK_SET 0
59 
60 #define	STDIN_FILENO	0
61 #define	STDOUT_FILENO	1
62 #define	STDERR_FILENO	2
63 
64 #define FILENAME_MAX 260
65 #define FOPEN_MAX 20
66 #define _SYS_OPEN 20
67 #define TMP_MAX 32767
68 
69 #ifndef NULL
70 #ifdef __cplusplus
71 #define NULL 0
72 #else
73 #define NULL ((void *)0)
74 #endif
75 #endif
76 
77 #ifndef _OFF_T_DEFINED
78 #define _OFF_T_DEFINED
79 #ifndef _OFF_T_
80 #define _OFF_T_
81   typedef long _off_t;
82 #if !defined(NO_OLDNAMES) || defined(_POSIX)
83   typedef long off_t;
84 #endif
85 #endif
86 #endif
87 
88 #ifndef _OFF64_T_DEFINED
89 #define _OFF64_T_DEFINED
90   __MINGW_EXTENSION typedef long long _off64_t;
91 #if !defined(NO_OLDNAMES) || defined(_POSIX)
92   __MINGW_EXTENSION typedef long long off64_t;
93 #endif
94 #endif
95 
96 #ifndef _STDIO_DEFINED
97   _CRTIMP FILE *__cdecl __iob_func(void);
98   _CRTDATA(extern FILE _iob[];)
99 #ifdef _M_CEE_PURE
100 #define _iob __iob_func()
101 #endif
102 #endif
103 
104 #ifndef _STDSTREAM_DEFINED
105 #define _STDSTREAM_DEFINED
106 #define stdin (&_iob[0])
107 #define stdout (&_iob[1])
108 #define stderr (&_iob[2])
109 #endif /* !_STDSTREAM_DEFINED */
110 
111 #ifndef _FPOS_T_DEFINED
112 #define _FPOS_T_DEFINED
113 #undef _FPOSOFF
114 
115 #if (!defined(NO_OLDNAMES) || defined(__GNUC__)) && _INTEGRAL_MAX_BITS >= 64
116   __MINGW_EXTENSION typedef __int64 fpos_t;
117 #define _FPOSOFF(fp) ((long)(fp))
118 #else
119   __MINGW_EXTENSION typedef long long fpos_t;
120 #define _FPOSOFF(fp) ((long)(fp))
121 #endif
122 
123 #endif
124 
125 #define _IOREAD 0x0001
126 #define _IOWRT 0x0002
127 
128 #define _IOFBF 0x0000
129 #define _IOLBF 0x0040
130 #define _IONBF 0x0004
131 
132 #define _IOMYBUF 0x0008
133 #define _IOEOF 0x0010
134 #define _IOERR 0x0020
135 #define _IOSTRG 0x0040
136 #define _IORW 0x0080
137 #define _USERBUF 0x0100
138 
139 #define _TWO_DIGIT_EXPONENT 0x1
140 
141 #ifndef _STDIO_DEFINED
142 
143   _Check_return_
144   _CRTIMP
145   int
146   __cdecl
147   _filbuf(
148     _Inout_ FILE *_File);
149 
150   _Check_return_opt_
151   _CRTIMP
152   int
153   __cdecl
154   _flsbuf(
155     _In_ int _Ch,
156     _Inout_ FILE *_File);
157 
158 #ifdef _POSIX_
159   _CRTIMP
160   FILE*
161   __cdecl
162   _fsopen(
163     const char *_Filename,
164     const char *_Mode);
165 #else
166   _Check_return_
167   _CRTIMP
168   FILE*
169   __cdecl
170   _fsopen(
171     _In_z_ const char *_Filename,
172     _In_z_ const char *_Mode,
173     _In_ int _ShFlag);
174 #endif
175 
176   _CRTIMP
177   void
178   __cdecl
179   clearerr(
180     _Inout_ FILE *_File);
181 
182   _Check_return_opt_
183   _CRTIMP
184   int
185   __cdecl
186   fclose(
187     _Inout_ FILE *_File);
188 
189   _Check_return_opt_
190   _CRTIMP
191   int
192   __cdecl
193   _fcloseall(void);
194 
195 #ifdef _POSIX_
196   FILE*
197   __cdecl
198   fdopen(
199     int _FileHandle,
200     const char *_Mode);
201 #else
202   _Check_return_
203   _CRTIMP
204   FILE*
205   __cdecl
206   _fdopen(
207     _In_ int _FileHandle,
208     _In_z_ const char *_Mode);
209 #endif
210 
211   _Check_return_
212   _CRTIMP
213   int
214   __cdecl
215   feof(
216     _In_ FILE *_File);
217 
218   _Check_return_
219   _CRTIMP
220   int
221   __cdecl
222   ferror(
223     _In_ FILE *_File);
224 
225   _Check_return_opt_
226   _CRTIMP
227   int
228   __cdecl
229   fflush(
230     _Inout_opt_ FILE *_File);
231 
232   _Check_return_opt_
233   _CRTIMP
234   int
235   __cdecl
236   fgetc(
237     _Inout_ FILE *_File);
238 
239   _Check_return_opt_
240   _CRTIMP
241   int
242   __cdecl
243   _fgetchar(void);
244 
245   _Check_return_opt_
246   _CRTIMP
247   int
248   __cdecl
249   fgetpos(
250     _Inout_ FILE *_File,
251     _Out_ fpos_t *_Pos);
252 
253   _Check_return_opt_
254   _CRTIMP
255   char*
256   __cdecl
257   fgets(
258     _Out_writes_z_(_MaxCount) char *_Buf,
259     _In_ int _MaxCount,
260     _Inout_ FILE *_File);
261 
262 #ifdef _POSIX_
263   int
264   __cdecl
265   fileno(
266     FILE *_File);
267 #else
268   _Check_return_
269   _CRTIMP
270   int
271   __cdecl
272   _fileno(
273     _In_ FILE *_File);
274 #endif
275 
276   _Check_return_
277   _CRTIMP
278   char*
279   __cdecl
280   _tempnam(
281     _In_opt_z_ const char *_DirName,
282     _In_opt_z_ const char *_FilePrefix);
283 
284   _Check_return_opt_
285   _CRTIMP
286   int
287   __cdecl
288   _flushall(void);
289 
290   _Check_return_
291   _CRTIMP
292   FILE*
293   __cdecl
294   fopen(
295     _In_z_ const char *_Filename,
296     _In_z_ const char *_Mode);
297 
298   _Check_return_opt_
299   _CRTIMP
300   int
301   __cdecl
302   fprintf(
303     _Inout_ FILE *_File,
304     _In_z_ _Printf_format_string_ const char *_Format,
305     ...);
306 
307   _Check_return_opt_
308   _CRTIMP
309   int
310   __cdecl
311   fputc(
312     _In_ int _Ch,
313     _Inout_ FILE *_File);
314 
315   _Check_return_opt_
316   _CRTIMP
317   int
318   __cdecl
319   _fputchar(
320     _In_ int _Ch);
321 
322   _Check_return_opt_
323   _CRTIMP
324   int
325   __cdecl
326   fputs(
327     _In_z_ const char *_Str,
328     _Inout_ FILE *_File);
329 
330   _Check_return_opt_
331   _CRTIMP
332   size_t
333   __cdecl
334   fread(
335     _Out_writes_bytes_(_ElementSize * _Count) void *_DstBuf,
336     _In_ size_t _ElementSize,
337     _In_ size_t _Count,
338     _Inout_ FILE *_File);
339 
340   _Check_return_
341   _CRTIMP
342   _CRT_INSECURE_DEPRECATE(freopen_s)
343   FILE*
344   __cdecl
345   freopen(
346     _In_z_ const char *_Filename,
347     _In_z_ const char *_Mode,
348     _Inout_ FILE *_File);
349 
350   _Check_return_
351   _CRTIMP
352   _CRT_INSECURE_DEPRECATE(fscanf_s)
353   int
354   __cdecl
355   fscanf(
356     _Inout_ FILE *_File,
357     _In_z_ _Scanf_format_string_ const char *_Format,
358     ...);
359 
360   _Check_return_opt_
361   _CRTIMP
362   int
363   __cdecl
364   fsetpos(
365     _Inout_ FILE *_File,
366     _In_ const fpos_t *_Pos);
367 
368   _Check_return_opt_
369   _CRTIMP
370   int
371   __cdecl
372   fseek(
373     _Inout_ FILE *_File,
374     _In_ long _Offset,
375     _In_ int _Origin);
376 
377   _Check_return_
378   _CRTIMP
379   long
380   __cdecl
381   ftell(
382     _Inout_ FILE *_File);
383 
384   _Check_return_opt_
385   __MINGW_EXTENSION
386   _CRTIMP
387   int
388   __cdecl
389   _fseeki64(
390     _Inout_ FILE *_File,
391     _In_ __int64 _Offset,
392     _In_ int _Origin);
393 
394   _Check_return_
395   __MINGW_EXTENSION
396   _CRTIMP
397   __int64
398   __cdecl
399   _ftelli64(
400     _Inout_ FILE *_File);
401 
402   _Check_return_opt_
403   _CRTIMP
404   size_t
405   __cdecl
406   fwrite(
407     _In_reads_bytes_(_Size * _Count) const void *_Str,
408     _In_ size_t _Size,
409     _In_ size_t _Count,
410     _Inout_ FILE *_File);
411 
412   _Check_return_
413   _CRTIMP
414   int
415   __cdecl
416   getc(
417     _Inout_ FILE *_File);
418 
419   _Check_return_
420   _CRTIMP
421   int
422   __cdecl
423   getchar(void);
424 
425   _Check_return_
426   _CRTIMP
427   int
428   __cdecl
429   _getmaxstdio(void);
430 
431   _CRTIMP
432   char*
433   __cdecl
434   gets(
435     char *_Buffer); // FIXME: non-standard
436 
437   _Check_return_
438   _CRTIMP
439   int
440   __cdecl
441   _getw(
442     _Inout_ FILE *_File);
443 
444 #ifndef _CRT_PERROR_DEFINED
445 #define _CRT_PERROR_DEFINED
446   _CRTIMP
447   void
448   __cdecl
449   perror(
450     _In_opt_z_ const char *_ErrMsg);
451 #endif
452 
453   _Check_return_opt_
454   _CRTIMP
455   int
456   __cdecl
457   _pclose(
458     _Inout_ FILE *_File);
459 
460   _Check_return_
461   _CRTIMP
462   FILE*
463   __cdecl
464   _popen(
465     _In_z_ const char *_Command,
466     _In_z_ const char *_Mode);
467 
468   _Check_return_opt_
469   _CRTIMP
470   int
471   __cdecl
472   printf(
473     _In_z_ _Printf_format_string_ const char *_Format,
474     ...);
475 
476   _Check_return_opt_
477   _CRTIMP
478   int
479   __cdecl
480   putc(
481     _In_ int _Ch,
482     _Inout_ FILE *_File);
483 
484   _Check_return_opt_
485   _CRTIMP
486   int
487   __cdecl
488   putchar(
489     _In_ int _Ch);
490 
491   _Check_return_opt_
492   _CRTIMP
493   int
494   __cdecl
495   puts(
496     _In_z_ const char *_Str);
497 
498   _Check_return_opt_
499   _CRTIMP
500   int
501   __cdecl
502   _putw(
503     _In_ int _Word,
504     _Inout_ FILE *_File);
505 
506 #ifndef _CRT_DIRECTORY_DEFINED
507 #define _CRT_DIRECTORY_DEFINED
508 
509   _Check_return_
510   _CRTIMP
511   int
512   __cdecl
513   remove(
514     _In_z_ const char *_Filename);
515 
516   _Check_return_
517   _CRTIMP
518   int
519   __cdecl
520   rename(
521     _In_z_ const char *_OldFilename,
522     _In_z_ const char *_NewFilename);
523 
524   _Check_return_
525   _CRTIMP
526   int
527   __cdecl
528   _unlink(
529     _In_z_ const char *_Filename);
530 
531 #ifndef NO_OLDNAMES
532   _Check_return_
533   _CRTIMP
534   _CRT_NONSTDC_DEPRECATE(_unlink)
535   int
536   __cdecl
537   unlink(
538     _In_z_ const char *_Filename);
539 #endif
540 
541 #endif /* _CRT_DIRECTORY_DEFINED */
542 
543   _CRTIMP
544   void
545   __cdecl
546   rewind(
547     _Inout_ FILE *_File);
548 
549   _Check_return_opt_
550   _CRTIMP
551   int
552   __cdecl
553   _rmtmp(void);
554 
555   _Check_return_
556   _CRTIMP
557   _CRT_INSECURE_DEPRECATE_CORE(scanf_s)
558   int
559   __cdecl
560   scanf(
561     _In_z_ _Scanf_format_string_ const char *_Format,
562     ...);
563 
564   _CRTIMP
565   _CRT_INSECURE_DEPRECATE(setvbuf)
566   void
567   __cdecl
568   setbuf(
569     _Inout_ FILE *_File,
570     _Inout_updates_opt_(BUFSIZ) _Post_readable_size_(0) char *_Buffer);
571 
572   _Check_return_opt_
573   _CRTIMP
574   int
575   __cdecl
576   _setmaxstdio(
577     _In_ int _Max);
578 
579   _Check_return_opt_
580   _CRTIMP
581   unsigned int
582   __cdecl
583   _set_output_format(
584     _In_ unsigned int _Format);
585 
586   _Check_return_opt_
587   _CRTIMP
588   unsigned int
589   __cdecl
590   _get_output_format(void);
591 
592   _Check_return_opt_
593   _CRTIMP
594   int
595   __cdecl
596   setvbuf(
597     _Inout_ FILE *_File,
598     _Inout_updates_opt_z_(_Size) char *_Buf,
599     _In_ int _Mode,
600     _In_ size_t _Size);
601 
602   _Check_return_
603   _CRTIMP
604   int
605   __cdecl
606   _scprintf(
607     _In_z_ _Printf_format_string_ const char *_Format,
608     ...);
609 
610   _Check_return_
611   _CRTIMP
612   _CRT_INSECURE_DEPRECATE_CORE(sscanf_s)
613   int
614   __cdecl
615   sscanf(
616     _In_z_ const char *_Src,
617     _In_z_ _Scanf_format_string_ const char *_Format,
618     ...);
619 
620   _Check_return_opt_
621   _CRTIMP
622   _CRT_INSECURE_DEPRECATE_CORE(_snscanf_s)
623   int
624   __cdecl
625   _snscanf(
626     _In_reads_bytes_(_MaxCount) _Pre_z_ const char *_Src,
627     _In_ size_t _MaxCount,
628     _In_z_ _Scanf_format_string_ const char *_Format,
629     ...);
630 
631   _Check_return_
632   _CRTIMP
633   _CRT_INSECURE_DEPRECATE(tmpfile_s)
634   FILE*
635   __cdecl
636   tmpfile(void);
637 
638   _CRTIMP
639   char*
640   __cdecl
641   tmpnam(
642     _Pre_maybenull_ _Post_z_ char *_Buffer);
643 
644   _Check_return_opt_
645   _CRTIMP_ALT
646   int
647   __cdecl
648   ungetc(
649     _In_ int _Ch,
650     _Inout_ FILE *_File);
651 
652   _Check_return_opt_
653   _CRTIMP
654   int
655   __cdecl
656   vfprintf(
657     _Inout_ FILE *_File,
658     _In_z_ _Printf_format_string_ const char *_Format,
659     va_list _ArgList);
660 
661   _Check_return_opt_
662   _CRTIMP
663   int
664   __cdecl
665   vprintf(
666     _In_z_ _Printf_format_string_ const char *_Format,
667     va_list _ArgList);
668 
669   /* Make sure macros are not defined.  */
670 #if __MINGW_GNUC_PREREQ(4,4)
671 #pragma push_macro("vsnprintf")
672 #pragma push_macro("snprintf")
673 #endif
674   #undef vsnprintf
675   #undef snprintf
676 
677   _Check_return_opt_
678   _CRTIMP
679   _CRT_INSECURE_DEPRECATE(vsnprintf_s)
680   int
681   __cdecl
682   vsnprintf(
683     _Out_writes_(_MaxCount) char *_DstBuf,
684     _In_ size_t _MaxCount,
685     _In_z_ _Printf_format_string_ const char *_Format,
686     va_list _ArgList);
687 
688   _CRTIMP int __cdecl _snprintf(char *_Dest,size_t _Count,const char *_Format,...);
689   _CRTIMP int __cdecl _vsnprintf(char *_Dest,size_t _Count,const char *_Format,va_list _Args);
690   int __cdecl sprintf(char *_Dest,const char *_Format,...);
691   int __cdecl vsprintf(char *_Dest,const char *_Format,va_list _Args);
692 
693 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
694   int __cdecl snprintf(char* s, size_t n, const char*  format, ...);
695   int __cdecl vscanf(const char * __restrict__ Format, va_list argp);
696   int __cdecl vfscanf (FILE * __restrict__ fp, const char * Format,va_list argp);
697   int __cdecl vsscanf (const char * __restrict__ _Str,const char * __restrict__ Format,va_list argp);
698 #endif
699 
700 /* Restore may prior defined macros snprintf/vsnprintf.  */
701 #if __MINGW_GNUC_PREREQ(4,4)
702 #pragma pop_macro("snprintf")
703 #pragma pop_macro("vsnprintf")
704 #endif
705 
706 #ifndef vsnprintf
707   #define vsnprintf _vsnprintf
708 #endif
709 #ifndef snprintf
710   #define snprintf _snprintf
711 #endif
712 
713   _Check_return_
714   _CRTIMP
715   int
716   __cdecl
717   _vscprintf(
718     _In_z_ _Printf_format_string_ const char *_Format,
719     va_list _ArgList);
720 
721 #ifdef _SAFECRT_IMPL
722 #define _set_printf_count_output(i)
723 #define _get_printf_count_output() (FALSE)
724 #else
725   _CRTIMP int __cdecl _set_printf_count_output(_In_ int _Value);
726   _CRTIMP int __cdecl _get_printf_count_output(void);
727 #endif
728 
729 #ifndef _WSTDIO_DEFINED
730 
731 #ifndef WEOF
732 #define WEOF (wint_t)(0xFFFF)
733 #endif
734 
735 #ifdef _POSIX_
736   _CRTIMP
737   FILE*
738   __cdecl
739   _wfsopen(
740     const wchar_t *_Filename,
741     const wchar_t *_Mode);
742 #else
743   _Check_return_
744   _CRTIMP
745   FILE*
746   __cdecl
747   _wfsopen(
748     _In_z_ const wchar_t *_Filename,
749     _In_z_ const wchar_t *_Mode,
750     _In_ int _ShFlag);
751 #endif
752 
753   _Check_return_opt_
754   _CRTIMP
755   wint_t
756   __cdecl
757   fgetwc(
758     _Inout_ FILE *_File);
759 
760   _Check_return_opt_
761   _CRTIMP
762   wint_t
763   __cdecl
764   _fgetwchar(void);
765 
766   _Check_return_opt_
767   _CRTIMP
768   wint_t
769   __cdecl
770   fputwc(
771     _In_ wchar_t _Ch,
772     _Inout_ FILE *_File);
773 
774   _Check_return_opt_
775   _CRTIMP
776   wint_t
777   __cdecl
778   _fputwchar(
779     _In_ wchar_t _Ch);
780 
781   _Check_return_
782   _CRTIMP
783   wint_t
784   __cdecl
785   getwc(
786     _Inout_ FILE *_File);
787 
788   _Check_return_
789   _CRTIMP
790   wint_t
791   __cdecl
792   getwchar(void);
793 
794   _Check_return_opt_
795   _CRTIMP
796   wint_t
797   __cdecl
798   putwc(
799     _In_ wchar_t _Ch,
800     _Inout_ FILE *_File);
801 
802   _Check_return_opt_
803   _CRTIMP
804   wint_t
805   __cdecl
806   putwchar(
807     _In_ wchar_t _Ch);
808 
809   _Check_return_opt_
810   _CRTIMP
811   wint_t
812   __cdecl
813   ungetwc(
814     _In_ wint_t _Ch,
815     _Inout_ FILE *_File);
816 
817   _Check_return_opt_
818   _CRTIMP
819   wchar_t*
820   __cdecl
821   fgetws(
822     _Out_writes_z_(_SizeInWords) wchar_t *_Dst,
823     _In_ int _SizeInWords,
824     _Inout_ FILE *_File);
825 
826   _Check_return_opt_
827   _CRTIMP
828   int
829   __cdecl
830   fputws(
831     _In_z_ const wchar_t *_Str,
832     _Inout_ FILE *_File);
833 
834   _CRTIMP
835   wchar_t*
836   __cdecl
837   _getws(
838     wchar_t *_String);
839 
840   _Check_return_opt_
841   _CRTIMP
842   int
843   __cdecl
844   _putws(
845     _In_z_ const wchar_t *_Str);
846 
847   _Check_return_opt_
848   _CRTIMP
849   int
850   __cdecl
851   fwprintf(
852     _Inout_ FILE *_File,
853     _In_z_ _Printf_format_string_ const wchar_t *_Format,
854     ...);
855 
856   _Check_return_opt_
857   _CRTIMP
858   int
859   __cdecl
860   wprintf(
861     _In_z_ _Printf_format_string_ const wchar_t *_Format,
862     ...);
863 
864   _Check_return_
865   _CRTIMP
866   int
867   __cdecl
868   _scwprintf(
869     _In_z_ _Printf_format_string_ const wchar_t *_Format,
870     ...);
871 
872   _Check_return_opt_
873   _CRTIMP
874   int
875   __cdecl
876   vfwprintf(
877     _Inout_ FILE *_File,
878     _In_z_ _Printf_format_string_ const wchar_t *_Format,
879     va_list _ArgList);
880 
881   _Check_return_opt_
882   _CRTIMP
883   int
884   __cdecl
885   vwprintf(
886     _In_z_ _Printf_format_string_ const wchar_t *_Format,
887     va_list _ArgList);
888 
889   _Check_return_opt_
890   _CRTIMP
891   int
892   __cdecl
893   swprintf(
894     _Out_ wchar_t*,
895     _Printf_format_string_ const wchar_t*,
896     ...);
897 
898   _CRTIMP
899   int
900   __cdecl
901   vswprintf(
902     _Out_ wchar_t*,
903     const wchar_t*,
904     va_list);
905 
906   _Check_return_opt_
907   _CRTIMP
908   int
909   __cdecl
910   _swprintf_c(
911     _Out_writes_z_(_SizeInWords) wchar_t *_DstBuf,
912     _In_ size_t _SizeInWords,
913     _In_z_ _Printf_format_string_ const wchar_t *_Format,
914     ...);
915 
916   _Check_return_opt_
917   _CRTIMP
918   int
919   __cdecl
920   _vswprintf_c(
921     _Out_writes_z_(_SizeInWords) wchar_t *_DstBuf,
922     _In_ size_t _SizeInWords,
923     _In_z_ _Printf_format_string_ const wchar_t *_Format,
924     va_list _ArgList);
925 
926   _CRTIMP int __cdecl _snwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,...);
927   _CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,va_list _Args);
928 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
929   _CRTIMP int __cdecl snwprintf (wchar_t* s, size_t n, const wchar_t*  format, ...);
930   __CRT_INLINE int __cdecl vsnwprintf (wchar_t* s, size_t n, const wchar_t* format, va_list arg)
931   {
932 #ifdef _MSC_VER
933 #pragma warning(push)
934 #pragma warning(disable:28719) /* disable banned api usage warning */
935 #endif /* _MSC_VER */
936       return _vsnwprintf(s,n,format,arg);
937 #ifdef _MSC_VER
938 #pragma warning(pop)
939 #endif /* _MSC_VER */
940   }
941   _CRTIMP int __cdecl vwscanf (const wchar_t *, va_list);
942   _CRTIMP int __cdecl vfwscanf (FILE *,const wchar_t *,va_list);
943   _CRTIMP int __cdecl vswscanf (const wchar_t *,const wchar_t *,va_list);
944 #endif
945   _CRTIMP int __cdecl _swprintf(wchar_t *_Dest,const wchar_t *_Format,...);
946   _CRTIMP int __cdecl _vswprintf(wchar_t *_Dest,const wchar_t *_Format,va_list _Args);
947 
948 #ifndef RC_INVOKED
949 #include <vadefs.h>
950 #endif
951 
952 #if 0 //this is for MSVCRT80 and higher, which we don't use nor implement
953 #ifdef _CRT_NON_CONFORMING_SWPRINTFS
954 #ifndef __cplusplus
955 #define swprintf _swprintf
956 #define vswprintf _vswprintf
957 #define _swprintf_l __swprintf_l
958 #define _vswprintf_l __vswprintf_l
959 #endif
960 #endif
961 #endif
962 
963   _Check_return_
964   _CRTIMP
965   wchar_t*
966   __cdecl
967   _wtempnam(
968     _In_opt_z_ const wchar_t *_Directory,
969     _In_opt_z_ const wchar_t *_FilePrefix);
970 
971   _Check_return_
972   _CRTIMP
973   int
974   __cdecl
975   _vscwprintf(
976     _In_z_ _Printf_format_string_ const wchar_t *_Format,
977     va_list _ArgList);
978 
979   _Check_return_
980   _CRTIMP
981   int
982   __cdecl
983   fwscanf(
984     _Inout_ FILE *_File,
985     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
986     ...);
987 
988   _Check_return_
989   _CRTIMP
990   int
991   __cdecl
992   swscanf(
993     _In_z_ const wchar_t *_Src,
994     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
995     ...);
996 
997   _Check_return_opt_
998   _CRTIMP
999   int
1000   __cdecl
1001   _snwscanf(
1002     _In_reads_(_MaxCount) _Pre_z_ const wchar_t *_Src,
1003     _In_ size_t _MaxCount,
1004     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1005     ...);
1006 
1007   _Check_return_
1008   _CRTIMP
1009   int
1010   __cdecl
1011   wscanf(
1012     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1013     ...);
1014 
1015   _Check_return_
1016   _CRTIMP
1017   FILE*
1018   __cdecl
1019   _wfdopen(
1020     _In_ int _FileHandle,
1021     _In_z_ const wchar_t *_Mode);
1022 
1023   _Check_return_
1024   _CRTIMP
1025   FILE*
1026   __cdecl
1027   _wfopen(
1028     _In_z_ const wchar_t *_Filename,
1029     _In_z_ const wchar_t *_Mode);
1030 
1031   _Check_return_
1032   _CRTIMP
1033   FILE*
1034   __cdecl
1035   _wfreopen(
1036     _In_z_ const wchar_t *_Filename,
1037     _In_z_ const wchar_t *_Mode,
1038     _Inout_ FILE *_OldFile);
1039 
1040 #ifndef _CRT_WPERROR_DEFINED
1041 #define _CRT_WPERROR_DEFINED
1042   _CRTIMP
1043   void
1044   __cdecl
1045   _wperror(
1046     _In_opt_z_ const wchar_t *_ErrMsg);
1047 #endif
1048 
1049   _Check_return_
1050   _CRTIMP
1051   FILE*
1052   __cdecl
1053   _wpopen(
1054     _In_z_ const wchar_t *_Command,
1055     _In_z_ const wchar_t *_Mode);
1056 
1057 #if !defined(NO_OLDNAMES) && !defined(wpopen)
1058 #define wpopen _wpopen
1059 #endif
1060 
1061   _Check_return_
1062   _CRTIMP
1063   int
1064   __cdecl
1065   _wremove(
1066     _In_z_ const wchar_t *_Filename);
1067 
1068   _CRTIMP
1069   wchar_t*
1070   __cdecl
1071   _wtmpnam(
1072     _Pre_maybenull_ _Post_z_ wchar_t *_Buffer);
1073 
1074   _Check_return_opt_
1075   _CRTIMP
1076   wint_t
1077   __cdecl
1078   _fgetwc_nolock(
1079     _Inout_ FILE *_File);
1080 
1081   _Check_return_opt_
1082   _CRTIMP
1083   wint_t
1084   __cdecl
1085   _fputwc_nolock(
1086     _In_ wchar_t _Ch,
1087     _Inout_ FILE *_File);
1088 
1089   _Check_return_opt_
1090   _CRTIMP
1091   wint_t
1092   __cdecl
1093   _ungetwc_nolock(
1094     _In_ wint_t _Ch,
1095     _Inout_ FILE *_File);
1096 
1097 #undef _CRT_GETPUTWCHAR_NOINLINE
1098 
1099 #if !defined(__cplusplus) || defined(_CRT_GETPUTWCHAR_NOINLINE)
1100 #define getwchar() fgetwc(stdin)
1101 #define putwchar(_c) fputwc((_c),stdout)
1102 #else
1103   __CRT_INLINE wint_t __cdecl getwchar() { return (fgetwc(stdin)); }
1104   __CRT_INLINE wint_t __cdecl putwchar(wchar_t _C) { return (fputwc(_C,stdout)); }
1105 #endif
1106 
1107 #define getwc(_stm) fgetwc(_stm)
1108 #define putwc(_c,_stm) fputwc(_c,_stm)
1109 #define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm)
1110 #define _getwc_nolock(_stm) _fgetwc_nolock(_stm)
1111 
1112 #define _WSTDIO_DEFINED
1113 #endif
1114 
1115 #define _STDIO_DEFINED
1116 #endif
1117 
1118 #define _fgetc_nolock(_stream) (--(_stream)->_cnt >= 0 ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
1119 #define _fputc_nolock(_c,_stream) (--(_stream)->_cnt >= 0 ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream)))
1120 #define _getc_nolock(_stream) _fgetc_nolock(_stream)
1121 #define _putc_nolock(_c,_stream) _fputc_nolock(_c,_stream)
1122 #define _getchar_nolock() _getc_nolock(stdin)
1123 #define _putchar_nolock(_c) _putc_nolock((_c),stdout)
1124 #define _getwchar_nolock() _getwc_nolock(stdin)
1125 #define _putwchar_nolock(_c) _putwc_nolock((_c),stdout)
1126 
1127   _CRTIMP
1128   void
1129   __cdecl
1130   _lock_file(
1131     _Inout_ FILE *_File);
1132 
1133   _CRTIMP
1134   void
1135   __cdecl
1136   _unlock_file(
1137     _Inout_ FILE *_File);
1138 
1139   _Check_return_opt_
1140   _CRTIMP
1141   int
1142   __cdecl
1143   _fclose_nolock(
1144     _Inout_ FILE *_File);
1145 
1146   _Check_return_opt_
1147   _CRTIMP
1148   int
1149   __cdecl
1150   _fflush_nolock(
1151     _Inout_opt_ FILE *_File);
1152 
1153   _Check_return_opt_
1154   _CRTIMP
1155   size_t
1156   __cdecl
1157   _fread_nolock(
1158     _Out_writes_bytes_(_ElementSize * _Count) void *_DstBuf,
1159     _In_ size_t _ElementSize,
1160     _In_ size_t _Count,
1161     _Inout_ FILE *_File);
1162 
1163   _Check_return_opt_
1164   _CRTIMP
1165   int
1166   __cdecl
1167   _fseek_nolock(
1168     _Inout_ FILE *_File,
1169     _In_ long _Offset,
1170     _In_ int _Origin);
1171 
1172   _Check_return_
1173   _CRTIMP
1174   long
1175   __cdecl
1176   _ftell_nolock(
1177     _Inout_ FILE *_File);
1178 
1179   _Check_return_opt_
1180   __MINGW_EXTENSION
1181   _CRTIMP
1182   int
1183   __cdecl
1184   _fseeki64_nolock(
1185     _Inout_ FILE *_File,
1186     _In_ __int64 _Offset,
1187     _In_ int _Origin);
1188 
1189   _Check_return_
1190   __MINGW_EXTENSION
1191   _CRTIMP
1192   __int64
1193   __cdecl
1194   _ftelli64_nolock(
1195     _Inout_ FILE *_File);
1196 
1197   _Check_return_opt_
1198   _CRTIMP
1199   size_t
1200   __cdecl
1201   _fwrite_nolock(
1202     _In_reads_bytes_(_Size * _Count) const void *_DstBuf,
1203     _In_ size_t _Size,
1204     _In_ size_t _Count,
1205     _Inout_ FILE *_File);
1206 
1207   _Check_return_opt_
1208   _CRTIMP
1209   int
1210   __cdecl
1211   _ungetc_nolock(
1212     _In_ int _Ch,
1213     _Inout_ FILE *_File);
1214 
1215 #if !defined(NO_OLDNAMES) || !defined(_POSIX)
1216 
1217 #define P_tmpdir _P_tmpdir
1218 #define SYS_OPEN _SYS_OPEN
1219 
1220   _CRTIMP
1221   char*
1222   __cdecl
1223   tempnam(
1224     _In_opt_z_ const char *_Directory,
1225     _In_opt_z_ const char *_FilePrefix);
1226 
1227   _Check_return_opt_
1228   _CRTIMP
1229   int
1230   __cdecl
1231   fcloseall(void);
1232 
1233   _Check_return_
1234   _CRTIMP
1235   FILE*
1236   __cdecl
1237   fdopen(
1238     _In_ int _FileHandle,
1239     _In_z_ const char *_Format);
1240 
1241   _Check_return_opt_
1242   _CRTIMP
1243   int
1244   __cdecl
1245   fgetchar(void);
1246 
1247   _Check_return_
1248   _CRTIMP
1249   int
1250   __cdecl
1251   fileno(
1252     _In_ FILE *_File);
1253 
1254   _Check_return_opt_
1255   _CRTIMP
1256   int
1257   __cdecl
1258   flushall(void);
1259 
1260   _Check_return_opt_
1261   _CRTIMP
1262   int
1263   __cdecl
1264   fputchar(
1265     _In_ int _Ch);
1266 
1267   _Check_return_
1268   _CRTIMP
1269   int
1270   __cdecl
1271   getw(
1272     _Inout_ FILE *_File);
1273 
1274   _Check_return_opt_
1275   _CRTIMP
1276   int
1277   __cdecl
1278   putw(
1279     _In_ int _Ch,
1280     _Inout_ FILE *_File);
1281 
1282   _Check_return_
1283   _CRTIMP
1284   int
1285   __cdecl
1286   rmtmp(void);
1287 
1288 #endif /* !defined(NO_OLDNAMES) || !defined(_POSIX) */
1289 
1290 #ifdef __cplusplus
1291 }
1292 #endif
1293 
1294 #pragma pack(pop)
1295 
1296 #include <sec_api/stdio_s.h>
1297 
1298 #endif
1299