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.
11 #pragma pack(push,_CRT_PACKING)
18 #define _NFILE _NSTREAM_
20 #define _IOB_ENTRIES 20
34 typedef struct _iobuf
FILE;
40 #define _wP_tmpdir L"/"
42 #define _P_tmpdir "\\"
43 #define _wP_tmpdir L"\\"
46 #define L_tmpnam (sizeof(_P_tmpdir) + 12)
57 #define STDIN_FILENO 0
58 #define STDOUT_FILENO 1
59 #define STDERR_FILENO 2
61 #define FILENAME_MAX 260
70 #define NULL ((void *)0)
74 #ifndef _OFF_T_DEFINED
75 #define _OFF_T_DEFINED
79 #if !defined(NO_OLDNAMES) || defined(_POSIX)
85 #ifndef _OFF64_T_DEFINED
86 #define _OFF64_T_DEFINED
87 typedef long long _off64_t
;
88 #if !defined(NO_OLDNAMES) || defined(_POSIX)
89 typedef long long off64_t
;
93 #ifndef _STDIO_DEFINED
95 _CRTIMP
FILE *__cdecl
__iob_func(void);
98 extern FILE _iob
[]; /* A pointer to an array of FILE */
99 #define __iob_func() (_iob)
101 extern FILE (*_imp___iob
)[]; /* A pointer to an array of FILE */
102 #define __iob_func() (*_imp___iob)
103 #define _iob __iob_func()
108 #ifndef _FPOS_T_DEFINED
109 #define _FPOS_T_DEFINED
112 #if (!defined(NO_OLDNAMES) || defined(__GNUC__)) && _INTEGRAL_MAX_BITS >= 64
113 typedef __int64
fpos_t;
114 #define _FPOSOFF(fp) ((long)(fp))
116 typedef long long fpos_t;
117 #define _FPOSOFF(fp) ((long)(fp))
122 #ifndef _STDSTREAM_DEFINED
123 #define _STDSTREAM_DEFINED
125 #define stdin (&__iob_func()[0])
126 #define stdout (&__iob_func()[1])
127 #define stderr (&__iob_func()[2])
130 #define _IOREAD 0x0001
131 #define _IOWRT 0x0002
133 #define _IOFBF 0x0000
134 #define _IOLBF 0x0040
135 #define _IONBF 0x0004
137 #define _IOMYBUF 0x0008
138 #define _IOEOF 0x0010
139 #define _IOERR 0x0020
140 #define _IOSTRG 0x0040
143 #define _IOAPPEND 0x0200
146 #define _TWO_DIGIT_EXPONENT 0x1
148 #ifndef _STDIO_DEFINED
150 _CRTIMP
int __cdecl
_filbuf(FILE *_File
);
151 _CRTIMP
int __cdecl
_flsbuf(int _Ch
,FILE *_File
);
153 _CRTIMP
FILE *__cdecl
_fsopen(const char *_Filename
,const char *_Mode
);
155 _CRTIMP
FILE *__cdecl
_fsopen(const char *_Filename
,const char *_Mode
,int _ShFlag
);
157 void __cdecl
clearerr(FILE *_File
);
158 int __cdecl
fclose(FILE *_File
);
159 _CRTIMP
int __cdecl
_fcloseall(void);
161 FILE *__cdecl
fdopen(int _FileHandle
,const char *_Mode
);
163 _CRTIMP
FILE *__cdecl
_fdopen(int _FileHandle
,const char *_Mode
);
165 int __cdecl
feof(FILE *_File
);
166 int __cdecl
ferror(FILE *_File
);
167 int __cdecl
fflush(FILE *_File
);
168 int __cdecl
fgetc(FILE *_File
);
169 _CRTIMP
int __cdecl
_fgetchar(void);
170 int __cdecl
fgetpos(FILE *_File
,fpos_t *_Pos
);
171 char *__cdecl
fgets(char *_Buf
,int _MaxCount
,FILE *_File
);
173 int __cdecl
fileno(FILE *_File
);
175 _CRTIMP
int __cdecl
_fileno(FILE *_File
);
177 _CRTIMP
char *__cdecl
_tempnam(const char *_DirName
,const char *_FilePrefix
);
178 _CRTIMP
int __cdecl
_flushall(void);
179 FILE *__cdecl
fopen(const char *_Filename
,const char *_Mode
);
180 FILE *fopen64(const char *filename
,const char *mode
);
181 int __cdecl
fprintf(FILE *_File
,const char *_Format
,...);
182 int __cdecl
fputc(int _Ch
,FILE *_File
);
183 _CRTIMP
int __cdecl
_fputchar(int _Ch
);
184 int __cdecl
fputs(const char *_Str
,FILE *_File
);
185 size_t __cdecl
fread(void *_DstBuf
,size_t _ElementSize
,size_t _Count
,FILE *_File
);
186 FILE *__cdecl
freopen(const char *_Filename
,const char *_Mode
,FILE *_File
);
187 int __cdecl
fscanf(FILE *_File
,const char *_Format
,...);
188 int __cdecl
fsetpos(FILE *_File
,const fpos_t *_Pos
);
189 int __cdecl
fseek(FILE *_File
,long _Offset
,int _Origin
);
190 int fseeko64(FILE* stream
, _off64_t offset
, int whence
);
191 long __cdecl
ftell(FILE *_File
);
192 _off64_t
ftello64(FILE * stream
);
193 int __cdecl
_fseeki64(FILE *_File
,__int64 _Offset
,int _Origin
);
194 __int64 __cdecl
_ftelli64(FILE *_File
);
195 size_t __cdecl
fwrite(const void *_Str
,size_t _Size
,size_t _Count
,FILE *_File
);
196 int __cdecl
getc(FILE *_File
);
197 int __cdecl
getchar(void);
198 _CRTIMP
int __cdecl
_getmaxstdio(void);
199 char *__cdecl
gets(char *_Buffer
);
200 int __cdecl
_getw(FILE *_File
);
201 #ifndef _CRT_PERROR_DEFINED
202 #define _CRT_PERROR_DEFINED
203 void __cdecl
perror(const char *_ErrMsg
);
205 _CRTIMP
int __cdecl
_pclose(FILE *_File
);
206 _CRTIMP
FILE *__cdecl
_popen(const char *_Command
,const char *_Mode
);
207 #if !defined(NO_OLDNAMES) && !defined(popen)
209 #define pclose _pclose
211 int __cdecl
printf(const char *_Format
,...);
212 int __cdecl
putc(int _Ch
,FILE *_File
);
213 int __cdecl
putchar(int _Ch
);
214 int __cdecl
puts(const char *_Str
);
215 _CRTIMP
int __cdecl
_putw(int _Word
,FILE *_File
);
216 #ifndef _CRT_DIRECTORY_DEFINED
217 #define _CRT_DIRECTORY_DEFINED
218 int __cdecl
remove(const char *_Filename
);
219 int __cdecl
rename(const char *_OldFilename
,const char *_NewFilename
);
220 _CRTIMP
int __cdecl
_unlink(const char *_Filename
);
222 int __cdecl
unlink(const char *_Filename
);
225 void __cdecl
rewind(FILE *_File
);
226 _CRTIMP
int __cdecl
_rmtmp(void);
227 int __cdecl
scanf(const char *_Format
,...);
228 void __cdecl
setbuf(FILE *_File
,char *_Buffer
);
229 _CRTIMP
int __cdecl
_setmaxstdio(int _Max
);
230 _CRTIMP
unsigned int __cdecl
_set_output_format(unsigned int _Format
);
231 _CRTIMP
unsigned int __cdecl
_get_output_format(void);
232 int __cdecl
setvbuf(FILE *_File
,char *_Buf
,int _Mode
,size_t _Size
);
233 _CRTIMP
int __cdecl
_scprintf(const char *_Format
,...);
234 int __cdecl
sscanf(const char *_Src
,const char *_Format
,...);
235 _CRTIMP
int __cdecl
_snscanf(const char *_Src
,size_t _MaxCount
,const char *_Format
,...);
236 FILE *__cdecl
tmpfile(void);
237 char *__cdecl
tmpnam(char *_Buffer
);
238 int __cdecl
ungetc(int _Ch
,FILE *_File
);
239 int __cdecl
vfprintf(FILE *_File
,const char *_Format
,va_list _ArgList
);
240 int __cdecl
vprintf(const char *_Format
,va_list _ArgList
);
241 /* Make sure macros are not defined. */
242 #pragma push_macro("vsnprintf")
243 #pragma push_macro("snprintf")
247 __attribute__((format(gnu_printf
, 3, 0))) __attribute__((nonnull (3)))
248 int __mingw_vsnprintf(char *_DstBuf
,size_t _MaxCount
,const char *_Format
,va_list _ArgList
);
250 __attribute__((format(gnu_printf
, 3, 4))) __attribute__((nonnull (3)))
251 int __mingw_snprintf(char* s
, size_t n
, const char* format
, ...);
252 int __cdecl
vsnprintf(char *_DstBuf
,size_t _MaxCount
,const char *_Format
,va_list _ArgList
);
253 _CRTIMP
int __cdecl
_snprintf(char *_Dest
,size_t _Count
,const char *_Format
,...);
254 _CRTIMP
int __cdecl
_vsnprintf(char *_Dest
,size_t _Count
,const char *_Format
,va_list _Args
);
255 int __cdecl
sprintf(char *_Dest
,const char *_Format
,...);
256 int __cdecl
vsprintf(char *_Dest
,const char *_Format
,va_list _Args
);
257 #ifndef __NO_ISOCEXT /* externs in libmingwex.a */
258 int __cdecl
snprintf(char* s
, size_t n
, const char* format
, ...);
259 __CRT_INLINE
int __cdecl
vsnprintf (char* s
, size_t n
, const char* format
,va_list arg
) {
260 return _vsnprintf ( s
, n
, format
, arg
);
262 int __cdecl
vscanf(const char * Format
, va_list argp
);
263 int __cdecl
vfscanf (FILE * fp
, const char * Format
,va_list argp
);
264 int __cdecl
vsscanf (const char * _Str
,const char * Format
,va_list argp
);
266 /* Restore may prior defined macros snprintf/vsnprintf. */
267 #pragma pop_macro("snprintf")
268 #pragma pop_macro("vsnprintf")
269 /* Check if vsnprintf and snprintf are defaulting to gnu-style. */
270 # if defined(USE_MINGW_GNU_SNPRINTF) && USE_MINGW_GNU_SNPRINTF
272 # define vsnprintf __mingw_vsnprintf
275 # define snprintf __mingw_snprintf
278 _CRTIMP
int __cdecl
_vscprintf(const char *_Format
,va_list _ArgList
);
279 _CRTIMP
int __cdecl
_set_printf_count_output(int _Value
);
280 _CRTIMP
int __cdecl
_get_printf_count_output(void);
282 #ifndef _WSTDIO_DEFINED
285 #define WEOF (wint_t)(0xFFFF)
289 _CRTIMP
FILE *__cdecl
_wfsopen(const wchar_t *_Filename
,const wchar_t *_Mode
);
291 _CRTIMP
FILE *__cdecl
_wfsopen(const wchar_t *_Filename
,const wchar_t *_Mode
,int _ShFlag
);
293 wint_t __cdecl
fgetwc(FILE *_File
);
294 _CRTIMP
wint_t __cdecl
_fgetwchar(void);
295 wint_t __cdecl
fputwc(wchar_t _Ch
,FILE *_File
);
296 _CRTIMP
wint_t __cdecl
_fputwchar(wchar_t _Ch
);
297 wint_t __cdecl
getwc(FILE *_File
);
298 wint_t __cdecl
getwchar(void);
299 wint_t __cdecl
putwc(wchar_t _Ch
,FILE *_File
);
300 wint_t __cdecl
putwchar(wchar_t _Ch
);
301 wint_t __cdecl
ungetwc(wint_t _Ch
,FILE *_File
);
302 wchar_t *__cdecl
fgetws(wchar_t *_Dst
,int _SizeInWords
,FILE *_File
);
303 int __cdecl
fputws(const wchar_t *_Str
,FILE *_File
);
304 _CRTIMP
wchar_t *__cdecl
_getws(wchar_t *_String
);
305 _CRTIMP
int __cdecl
_putws(const wchar_t *_Str
);
306 int __cdecl
fwprintf(FILE *_File
,const wchar_t *_Format
,...);
307 int __cdecl
wprintf(const wchar_t *_Format
,...);
308 _CRTIMP
int __cdecl
_scwprintf(const wchar_t *_Format
,...);
309 int __cdecl
vfwprintf(FILE *_File
,const wchar_t *_Format
,va_list _ArgList
);
310 int __cdecl
vwprintf(const wchar_t *_Format
,va_list _ArgList
);
311 _CRTIMP
int __cdecl
swprintf(wchar_t*, const wchar_t*, ...);
312 _CRTIMP
int __cdecl
vswprintf(wchar_t*, const wchar_t*,va_list);
313 _CRTIMP
int __cdecl
_swprintf_c(wchar_t *_DstBuf
,size_t _SizeInWords
,const wchar_t *_Format
,...);
314 _CRTIMP
int __cdecl
_vswprintf_c(wchar_t *_DstBuf
,size_t _SizeInWords
,const wchar_t *_Format
,va_list _ArgList
);
315 _CRTIMP
int __cdecl
_snwprintf(wchar_t *_Dest
,size_t _Count
,const wchar_t *_Format
,...);
316 _CRTIMP
int __cdecl
_vsnwprintf(wchar_t *_Dest
,size_t _Count
,const wchar_t *_Format
,va_list _Args
);
317 #ifndef __NO_ISOCEXT /* externs in libmingwex.a */
318 int __cdecl
snwprintf (wchar_t* s
, size_t n
, const wchar_t* format
, ...);
319 __CRT_INLINE
int __cdecl
vsnwprintf (wchar_t* s
, size_t n
, const wchar_t* format
, va_list arg
) { return _vsnwprintf(s
,n
,format
,arg
); }
320 int __cdecl
vwscanf (const wchar_t *, va_list);
321 int __cdecl
vfwscanf (FILE *,const wchar_t *,va_list);
322 int __cdecl
vswscanf (const wchar_t *,const wchar_t *,va_list);
324 _CRTIMP
int __cdecl
_swprintf(wchar_t *_Dest
,const wchar_t *_Format
,...);
325 _CRTIMP
int __cdecl
_vswprintf(wchar_t *_Dest
,const wchar_t *_Format
,va_list _Args
);
331 #ifdef _CRT_NON_CONFORMING_SWPRINTFS
333 #define swprintf _swprintf
334 #define vswprintf _vswprintf
335 #define _swprintf_l __swprintf_l
336 #define _vswprintf_l __vswprintf_l
340 _CRTIMP
wchar_t *__cdecl
_wtempnam(const wchar_t *_Directory
,const wchar_t *_FilePrefix
);
341 _CRTIMP
int __cdecl
_vscwprintf(const wchar_t *_Format
,va_list _ArgList
);
342 int __cdecl
fwscanf(FILE *_File
,const wchar_t *_Format
,...);
343 int __cdecl
swscanf(const wchar_t *_Src
,const wchar_t *_Format
,...);
344 _CRTIMP
int __cdecl
_snwscanf(const wchar_t *_Src
,size_t _MaxCount
,const wchar_t *_Format
,...);
345 int __cdecl
wscanf(const wchar_t *_Format
,...);
346 _CRTIMP
FILE *__cdecl
_wfdopen(int _FileHandle
,const wchar_t *_Mode
);
347 _CRTIMP
FILE *__cdecl
_wfopen(const wchar_t *_Filename
,const wchar_t *_Mode
);
348 _CRTIMP
FILE *__cdecl
_wfreopen(const wchar_t *_Filename
,const wchar_t *_Mode
,FILE *_OldFile
);
349 #ifndef _CRT_WPERROR_DEFINED
350 #define _CRT_WPERROR_DEFINED
351 _CRTIMP
void __cdecl
_wperror(const wchar_t *_ErrMsg
);
353 _CRTIMP
FILE *__cdecl
_wpopen(const wchar_t *_Command
,const wchar_t *_Mode
);
354 #if !defined(NO_OLDNAMES) && !defined(wpopen)
355 #define wpopen _wpopen
357 _CRTIMP
int __cdecl
_wremove(const wchar_t *_Filename
);
358 _CRTIMP
wchar_t *__cdecl
_wtmpnam(wchar_t *_Buffer
);
359 _CRTIMP
wint_t __cdecl
_fgetwc_nolock(FILE *_File
);
360 _CRTIMP
wint_t __cdecl
_fputwc_nolock(wchar_t _Ch
,FILE *_File
);
361 _CRTIMP
wint_t __cdecl
_ungetwc_nolock(wint_t _Ch
,FILE *_File
);
363 #undef _CRT_GETPUTWCHAR_NOINLINE
365 #if !defined(__cplusplus) || defined(_CRT_GETPUTWCHAR_NOINLINE)
366 #define getwchar() fgetwc(stdin)
367 #define putwchar(_c) fputwc((_c),stdout)
369 __CRT_INLINE
wint_t __cdecl
getwchar() { return (fgetwc(stdin
)); }
370 __CRT_INLINE
wint_t __cdecl
putwchar(wchar_t _C
) { return (fputwc(_C
,stdout
)); }
373 #define getwc(_stm) fgetwc(_stm)
374 #define putwc(_c,_stm) fputwc(_c,_stm)
375 #define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm)
376 #define _getwc_nolock(_stm) _fgetwc_nolock(_stm)
378 #define _WSTDIO_DEFINED
381 #define _STDIO_DEFINED
384 #define _fgetc_nolock(_stream) (--(_stream)->_cnt >= 0 ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
385 #define _fputc_nolock(_c,_stream) (--(_stream)->_cnt >= 0 ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream)))
386 #define _getc_nolock(_stream) _fgetc_nolock(_stream)
387 #define _putc_nolock(_c,_stream) _fputc_nolock(_c,_stream)
388 #define _getchar_nolock() _getc_nolock(stdin)
389 #define _putchar_nolock(_c) _putc_nolock((_c),stdout)
390 #define _getwchar_nolock() _getwc_nolock(stdin)
391 #define _putwchar_nolock(_c) _putwc_nolock((_c),stdout)
393 _CRTIMP
void __cdecl
_lock_file(FILE *_File
);
394 _CRTIMP
void __cdecl
_unlock_file(FILE *_File
);
395 _CRTIMP
int __cdecl
_fclose_nolock(FILE *_File
);
396 _CRTIMP
int __cdecl
_fflush_nolock(FILE *_File
);
397 _CRTIMP
size_t __cdecl
_fread_nolock(void *_DstBuf
,size_t _ElementSize
,size_t _Count
,FILE *_File
);
398 _CRTIMP
int __cdecl
_fseek_nolock(FILE *_File
,long _Offset
,int _Origin
);
399 _CRTIMP
long __cdecl
_ftell_nolock(FILE *_File
);
400 _CRTIMP
int __cdecl
_fseeki64_nolock(FILE *_File
,__int64 _Offset
,int _Origin
);
401 _CRTIMP __int64 __cdecl
_ftelli64_nolock(FILE *_File
);
402 _CRTIMP
size_t __cdecl
_fwrite_nolock(const void *_DstBuf
,size_t _Size
,size_t _Count
,FILE *_File
);
403 _CRTIMP
int __cdecl
_ungetc_nolock(int _Ch
,FILE *_File
);
405 #if !defined(NO_OLDNAMES) || !defined(_POSIX)
406 #define P_tmpdir _P_tmpdir
407 #define SYS_OPEN _SYS_OPEN
409 char *__cdecl
tempnam(const char *_Directory
,const char *_FilePrefix
);
410 int __cdecl
fcloseall(void);
411 FILE *__cdecl
fdopen(int _FileHandle
,const char *_Format
);
412 int __cdecl
fgetchar(void);
413 int __cdecl
fileno(FILE *_File
);
414 int __cdecl
flushall(void);
415 int __cdecl
fputchar(int _Ch
);
416 int __cdecl
getw(FILE *_File
);
417 int __cdecl
putw(int _Ch
,FILE *_File
);
418 int __cdecl
rmtmp(void);
427 #include <sec_api/stdio_s.h>