Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.62 KB | None | 0 0
  1. /*
  2. * stdio.h
  3. *
  4. * Definitions of types and prototypes of functions for operations on
  5. * standard input and standard output streams.
  6. *
  7. * $Id: stdio.h,v 0e4f78dbc1ba 2016/06/17 14:16:01 keithmarshall $
  8. *
  9. * Written by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  10. * Copyright (C) 1997-2005, 2007-2010, 2014-2016, MinGW.org Project.
  11. *
  12. *
  13. * Permission is hereby granted, free of charge, to any person obtaining a
  14. * copy of this software and associated documentation files (the "Software"),
  15. * to deal in the Software without restriction, including without limitation
  16. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  17. * and/or sell copies of the Software, and to permit persons to whom the
  18. * Software is furnished to do so, subject to the following conditions:
  19. *
  20. * The above copyright notice, this permission notice, and the following
  21. * disclaimer shall be included in all copies or substantial portions of
  22. * the Software.
  23. *
  24. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  25. * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  26. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  27. * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  28. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  29. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
  30. * DEALINGS IN THE SOFTWARE.
  31. *
  32. * NOTE: The file manipulation functions provided by Microsoft seem to
  33. * work with either slash (/) or backslash (\) as the directory separator;
  34. * (this is consistent with Microsoft's own documentation, on MSDN).
  35. *
  36. */
  37. #ifndef _STDIO_H
  38. #pragma GCC system_header
  39.  
  40. /* When including <wchar.h>, some of the definitions and declarations
  41. * which are nominally provided in <stdio.h> must be duplicated. Rather
  42. * than require duplicated maintenance effort, we provide for partial
  43. * inclusion of <stdio.h> by <wchar.h>; only when not included in
  44. * this partial fashion...
  45. */
  46. #ifndef __WCHAR_H_SOURCED__
  47. /*
  48. * ...which is exclusive to <wchar.h>, do we assert the multiple
  49. * inclusion guard for <stdio.h> itself.
  50. */
  51. #define _STDIO_H
  52. #endif
  53.  
  54. /* All the headers include this file.
  55. */
  56. #include <_mingw.h>
  57.  
  58. #ifndef RC_INVOKED
  59. /* POSIX stipulates that the following set of types, (as identified by
  60. * __need_TYPENAME macros), shall be defined consistently with <stddef.h>;
  61. * by defining the appropriate __need_TYPENAME macros, we may selectively
  62. * obtain the required definitions by inclusion of <stddef.h>, WITHOUT
  63. * automatic exposure of any of its additional content.
  64. */
  65. #define __need_NULL
  66. #define __need_size_t
  67. #define __need_wchar_t
  68. #define __need_wint_t
  69. #include <stddef.h>
  70.  
  71. #if _POSIX_C_SOURCE >= 200809L
  72. /* Similarly, for types defined in <sys/types.h>, (which are explicitly
  73. * dependent on the POSIX.1-2008 feature test)...
  74. */
  75. # define __need_off_t
  76. # define __need_ssize_t
  77. #endif
  78. #if !(defined __STRICT_ANSI__ || defined (__NO_MINGW_LFS)) \
  79. && defined (__MSVCRT__)
  80. /* ...while this is required to support our fseeko64() and ftello64()
  81. * implementations, (neither of which is in any way standardized)...
  82. */
  83. # define __need___off64_t
  84. #endif
  85. /* It is sufficient to test for just one define from each of the two
  86. * preceding groups...
  87. */
  88. #if defined __need_off_t || defined __need___off64_t
  89. /* ...to identify a requirement for selective inclusion of one or more
  90. * of these type definitions from "sys/types.h"; (note that we use the
  91. * #include "..." form here, to ensure that we get the correct header
  92. * file, relative to the location of this <stdio.h>).
  93. */
  94. # include "sys/types.h"
  95. #endif
  96.  
  97. #ifndef __VALIST
  98. /* Also similarly, for the va_list type, defined in "stdarg.h"
  99. */
  100. # if defined __GNUC__ && __GNUC__ >= 3
  101. # define __need___va_list
  102. # include "stdarg.h"
  103. # define __VALIST __builtin_va_list
  104. # else
  105. # define __VALIST char *
  106. # endif
  107. #endif
  108. #endif /* ! RC_INVOKED */
  109.  
  110. #ifdef _STDIO_H
  111. /* Flags for the iobuf structure
  112. */
  113. #define _IOREAD 1 /* currently reading */
  114. #define _IOWRT 2 /* currently writing */
  115. #define _IORW 0x0080 /* opened as "r+w" */
  116.  
  117. /* The three standard file pointers provided by the run time library.
  118. * NOTE: These will go to the bit-bucket silently in GUI applications!
  119. */
  120. #define STDIN_FILENO 0
  121. #define STDOUT_FILENO 1
  122. #define STDERR_FILENO 2
  123.  
  124. /* Returned by various functions on end of file condition or error.
  125. */
  126. #define EOF (-1)
  127.  
  128. #endif /* _STDIO_H */
  129.  
  130. /* The maximum length of a file name. It may be better to use the Windows'
  131. * GetVolumeInformation() function in preference to this constant, but hey,
  132. * this works! Note that <io.h> also defines it, but we don't guard it, so
  133. * that the compiler has a chance to catch inconsistencies.
  134. *
  135. * FIXME: Right now, we define this unconditionally for both full <stdio.h>
  136. * inclusion, and for partial inclusion on behalf of <wchar.h>, (which needs
  137. * it for some non-ANSI structure declarations). The conditions under which
  138. * <wchar.h> needs this require review, because defining it as a consequence
  139. * of including <wchar.h> alone may violate strict ANSI conformity.
  140. */
  141. #define FILENAME_MAX (260)
  142.  
  143. #ifdef _STDIO_H
  144. /* The maximum number of files that may be open at once. I have set this to
  145. * a conservative number. The actual value may be higher.
  146. */
  147. #define FOPEN_MAX (20)
  148.  
  149. /* After creating this many names, tmpnam and tmpfile return NULL
  150. */
  151. #define TMP_MAX 32767
  152.  
  153. /* Tmpnam, tmpfile and, sometimes, _tempnam try to create
  154. * temp files in the root directory of the current drive
  155. * (not in pwd, as suggested by some older MS doc's).
  156. * Redefining these macros does not effect the CRT functions.
  157. */
  158. #define _P_tmpdir "\\"
  159. #ifndef __STRICT_ANSI__
  160. #define P_tmpdir _P_tmpdir
  161. #endif
  162. #define _wP_tmpdir L"\\"
  163.  
  164. /* The maximum size of name (including NUL) that will be put in the user
  165. * supplied buffer caName for tmpnam.
  166. * Inferred from the size of the static buffer returned by tmpnam
  167. * when passed a NULL argument. May actually be smaller.
  168. */
  169. #define L_tmpnam (16)
  170.  
  171. #define _IOFBF 0x0000 /* full buffered */
  172. #define _IOLBF 0x0040 /* line buffered */
  173. #define _IONBF 0x0004 /* not buffered */
  174.  
  175. #define _IOMYBUF 0x0008 /* stdio malloc()'d buffer */
  176. #define _IOEOF 0x0010 /* EOF reached on read */
  177. #define _IOERR 0x0020 /* I/O error from system */
  178. #define _IOSTRG 0x0040 /* Strange or no file descriptor */
  179. #ifdef _POSIX_SOURCE
  180. # define _IOAPPEND 0x0200
  181. #endif
  182.  
  183. /* The buffer size as used by setbuf such that it is equivalent to
  184. * (void) setvbuf(fileSetBuffer, caBuffer, _IOFBF, BUFSIZ).
  185. */
  186. #define BUFSIZ 512
  187.  
  188. /* Constants for nOrigin indicating the position relative to which fseek
  189. * sets the file position. Defined unconditionally since ISO and POSIX
  190. * say they are defined here.
  191. */
  192. #define SEEK_SET 0
  193. #define SEEK_CUR 1
  194. #define SEEK_END 2
  195.  
  196. #endif /* _STDIO_H */
  197.  
  198. #ifndef RC_INVOKED
  199. #if ! (defined _STDIO_H && defined _WCHAR_H)
  200. /* The structure underlying the FILE type; this should be defined when
  201. * including either <stdio.h> or <wchar.h>. If both header include guards
  202. * are now in place, then we must currently be including <stdio.h> in its
  203. * own right, having already processed this block during a prior partial
  204. * inclusion by <wchar.h>; there is no need to process it a second time.
  205. *
  206. * Some believe that nobody in their right mind should make use of the
  207. * internals of this structure. Provided by Pedro A. Aranda Gutiirrez
  208. * <paag@tid.es>.
  209. */
  210. typedef struct _iobuf
  211. {
  212. char *_ptr;
  213. int _cnt;
  214. char *_base;
  215. int _flag;
  216. int _file;
  217. int _charbuf;
  218. int _bufsiz;
  219. char *_tmpfname;
  220. } FILE;
  221.  
  222. #endif /* ! (_STDIO_H && _WCHAR_H) */
  223. #ifdef _STDIO_H
  224. /* Content to be exposed only when including <stdio.h> in its own right;
  225. * these will not be exposed when __WCHAR_H_SOURCE__ is defined, as will
  226. * be the case when <stdio.h> is included indirectly, by <wchar.h>
  227. *
  228. *
  229. * The standard file handles
  230. */
  231. #ifndef __DECLSPEC_SUPPORTED
  232.  
  233. extern FILE (*_imp___iob)[]; /* A pointer to an array of FILE */
  234.  
  235. #define _iob (*_imp___iob) /* An array of FILE */
  236.  
  237. #else /* __DECLSPEC_SUPPORTED */
  238.  
  239. __MINGW_IMPORT FILE _iob[]; /* An array of FILE imported from DLL. */
  240.  
  241. #endif /* __DECLSPEC_SUPPORTED */
  242.  
  243. #define stdin (&_iob[STDIN_FILENO])
  244. #define stdout (&_iob[STDOUT_FILENO])
  245. #define stderr (&_iob[STDERR_FILENO])
  246.  
  247. /* Need to close the current _STDIO_H specific block here...
  248. */
  249. #endif
  250. /* ...because, we need this regardless of the inclusion mode...
  251. */
  252. _BEGIN_C_DECLS
  253.  
  254. #ifdef _STDIO_H
  255. /* ...then revert to _STDIO_H specific mode, to declare...
  256. *
  257. *
  258. * File Operations
  259. */
  260. _CRTIMP __cdecl __MINGW_NOTHROW FILE * fopen (const char *, const char *);
  261. _CRTIMP __cdecl __MINGW_NOTHROW FILE * freopen (const char *, const char *, FILE *);
  262. _CRTIMP __cdecl __MINGW_NOTHROW int fflush (FILE *);
  263. _CRTIMP __cdecl __MINGW_NOTHROW int fclose (FILE *);
  264.  
  265. /* Note: Microsoft also declares remove & rename (but not their wide char
  266. * variants) in <io.h>; since duplicate prototypes are acceptable, provided
  267. * they are consistent, we simply declare them here anyway, while allowing
  268. * the compiler to check consistency as appropriate.
  269. */
  270. _CRTIMP __cdecl __MINGW_NOTHROW int remove (const char *);
  271. _CRTIMP __cdecl __MINGW_NOTHROW int rename (const char *, const char *);
  272. _CRTIMP __cdecl __MINGW_NOTHROW FILE * tmpfile (void);
  273. _CRTIMP __cdecl __MINGW_NOTHROW char * tmpnam (char *);
  274.  
  275. #ifndef __STRICT_ANSI__
  276. _CRTIMP __cdecl __MINGW_NOTHROW char *_tempnam (const char *, const char *);
  277. _CRTIMP __cdecl __MINGW_NOTHROW int _rmtmp (void);
  278. _CRTIMP __cdecl __MINGW_NOTHROW int _unlink (const char *);
  279.  
  280. #if __MSVCRT_VERSION__>=__MSVCR80_DLL
  281. /* The following pair of non-ANSI functions require a non-free version of
  282. * the Microsoft runtime; neither is provided by any MSVCRT.DLL variant.
  283. */
  284. _CRTIMP __cdecl __MINGW_NOTHROW void _lock_file(FILE *);
  285. _CRTIMP __cdecl __MINGW_NOTHROW void _unlock_file(FILE *);
  286. #endif
  287.  
  288. #ifndef NO_OLDNAMES
  289. _CRTIMP __cdecl __MINGW_NOTHROW char * tempnam (const char *, const char *);
  290. _CRTIMP __cdecl __MINGW_NOTHROW int rmtmp (void);
  291. _CRTIMP __cdecl __MINGW_NOTHROW int unlink (const char *);
  292. #endif
  293. #endif /* __STRICT_ANSI__ */
  294.  
  295. _CRTIMP __cdecl __MINGW_NOTHROW int setvbuf (FILE *, char *, int, size_t);
  296. _CRTIMP __cdecl __MINGW_NOTHROW void setbuf (FILE *, char *);
  297.  
  298. /* Formatted Output
  299. *
  300. * MSVCRT implementations are not ANSI C99 conformant...
  301. * we offer these conforming alternatives from libmingwex.a
  302. */
  303. #undef __mingw_stdio_redirect__
  304. #define __mingw_stdio_redirect__(F) __cdecl __MINGW_NOTHROW __mingw_##F
  305.  
  306. extern int __mingw_stdio_redirect__(fprintf)(FILE*, const char*, ...);
  307. extern int __mingw_stdio_redirect__(printf)(const char*, ...);
  308. extern int __mingw_stdio_redirect__(sprintf)(char*, const char*, ...);
  309. extern int __mingw_stdio_redirect__(snprintf)(char*, size_t, const char*, ...);
  310. extern int __mingw_stdio_redirect__(vfprintf)(FILE*, const char*, __VALIST);
  311. extern int __mingw_stdio_redirect__(vprintf)(const char*, __VALIST);
  312. extern int __mingw_stdio_redirect__(vsprintf)(char*, const char*, __VALIST);
  313. extern int __mingw_stdio_redirect__(vsnprintf)(char*, size_t, const char*, __VALIST);
  314.  
  315. /* When using these C99 conforming alternatives, we may wish to support
  316. * some of Microsoft's quirky formatting options, even when they violate
  317. * strict C99 conformance.
  318. */
  319. #define _MSVC_PRINTF_QUIRKS 0x0100U
  320. #define _QUERY_MSVC_PRINTF_QUIRKS ~0U, 0U
  321. #define _DISABLE_MSVC_PRINTF_QUIRKS ~_MSVC_PRINTF_QUIRKS, 0U
  322. #define _ENABLE_MSVC_PRINTF_QUIRKS ~0U, _MSVC_PRINTF_QUIRKS
  323.  
  324. /* Those quirks which conflict with ANSI C99 specified behaviour are
  325. * disabled by default; use the following function, like this:
  326. *
  327. * _mingw_output_format_control( _ENABLE_MSVC_PRINTF_QUIRKS );
  328. *
  329. * to enable them, like this:
  330. *
  331. * state = _mingw_output_format_control( _QUERY_MSVC_PRINTF_QUIRKS )
  332. * & _MSVC_PRINTF_QUIRKS;
  333. *
  334. * to ascertain the currently active enabled state, or like this:
  335. *
  336. * _mingw_output_format_control( _DISABLE_MSVC_PRINTF_QUIRKS );
  337. *
  338. * to disable them again.
  339. */
  340. extern unsigned int _mingw_output_format_control( unsigned int, unsigned int );
  341.  
  342. #if __USE_MINGW_ANSI_STDIO
  343. /* User has expressed a preference for C99 conformance...
  344. */
  345. # undef __mingw_stdio_redirect__
  346. # ifdef __cplusplus
  347. /* For C++ we use inline implementations, to avoid interference
  348. * with namespace qualification, which may result from using #defines.
  349. */
  350. # define __mingw_stdio_redirect__ inline __cdecl __MINGW_NOTHROW
  351.  
  352. # elif defined __GNUC__
  353. /* FIXME: Is there any GCC version prerequisite here?
  354. *
  355. * We also prefer inline implementations for C, when we can be confident
  356. * that the GNU specific __inline__ mechanism is supported.
  357. */
  358. # define __mingw_stdio_redirect__ static __inline__ __cdecl __MINGW_NOTHROW
  359.  
  360. # else
  361. /* Can't use inlines; fall back on module local static stubs.
  362. */
  363. # define __mingw_stdio_redirect__ static __cdecl __MINGW_NOTHROW
  364. # endif
  365.  
  366. __mingw_stdio_redirect__
  367. int fprintf (FILE *__stream, const char *__format, ...)
  368. {
  369. register int __retval;
  370. __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  371. __retval = __mingw_vfprintf( __stream, __format, __local_argv );
  372. __builtin_va_end( __local_argv );
  373. return __retval;
  374. }
  375.  
  376. __mingw_stdio_redirect__
  377. int printf (const char *__format, ...)
  378. {
  379. register int __retval;
  380. __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  381. __retval = __mingw_vprintf( __format, __local_argv );
  382. __builtin_va_end( __local_argv );
  383. return __retval;
  384. }
  385.  
  386. __mingw_stdio_redirect__
  387. int sprintf (char *__stream, const char *__format, ...)
  388. {
  389. register int __retval;
  390. __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  391. __retval = __mingw_vsprintf( __stream, __format, __local_argv );
  392. __builtin_va_end( __local_argv );
  393. return __retval;
  394. }
  395.  
  396. __mingw_stdio_redirect__
  397. int vfprintf (FILE *__stream, const char *__format, __VALIST __local_argv)
  398. {
  399. return __mingw_vfprintf( __stream, __format, __local_argv );
  400. }
  401.  
  402. __mingw_stdio_redirect__
  403. int vprintf (const char *__format, __VALIST __local_argv)
  404. {
  405. return __mingw_vprintf( __format, __local_argv );
  406. }
  407.  
  408. __mingw_stdio_redirect__
  409. int vsprintf (char *__stream, const char *__format, __VALIST __local_argv)
  410. {
  411. return __mingw_vsprintf( __stream, __format, __local_argv );
  412. }
  413.  
  414. #else
  415. /* Default configuration: simply direct all calls to MSVCRT...
  416. */
  417. _CRTIMP __cdecl __MINGW_NOTHROW int fprintf (FILE *, const char *, ...);
  418. _CRTIMP __cdecl __MINGW_NOTHROW int printf (const char *, ...);
  419. _CRTIMP __cdecl __MINGW_NOTHROW int sprintf (char *, const char *, ...);
  420. _CRTIMP __cdecl __MINGW_NOTHROW int vfprintf (FILE *, const char *, __VALIST);
  421. _CRTIMP __cdecl __MINGW_NOTHROW int vprintf (const char *, __VALIST);
  422. _CRTIMP __cdecl __MINGW_NOTHROW int vsprintf (char *, const char *, __VALIST);
  423.  
  424. #endif
  425. /* Regardless of user preference, always offer these alternative
  426. * entry points, for direct access to the MSVCRT implementations.
  427. */
  428. #undef __mingw_stdio_redirect__
  429. #define __mingw_stdio_redirect__(F) __cdecl __MINGW_NOTHROW __msvcrt_##F
  430.  
  431. _CRTIMP int __mingw_stdio_redirect__(fprintf)(FILE *, const char *, ...);
  432. _CRTIMP int __mingw_stdio_redirect__(printf)(const char *, ...);
  433. _CRTIMP int __mingw_stdio_redirect__(sprintf)(char *, const char *, ...);
  434. _CRTIMP int __mingw_stdio_redirect__(vfprintf)(FILE *, const char *, __VALIST);
  435. _CRTIMP int __mingw_stdio_redirect__(vprintf)(const char *, __VALIST);
  436. _CRTIMP int __mingw_stdio_redirect__(vsprintf)(char *, const char *, __VALIST);
  437.  
  438. #undef __mingw_stdio_redirect__
  439.  
  440. /* The following three ALWAYS refer to the MSVCRT implementations...
  441. */
  442. _CRTIMP __cdecl __MINGW_NOTHROW int _snprintf (char *, size_t, const char *, ...);
  443. _CRTIMP __cdecl __MINGW_NOTHROW int _vsnprintf (char *, size_t, const char *, __VALIST);
  444. _CRTIMP __cdecl __MINGW_NOTHROW int _vscprintf (const char *, __VALIST);
  445.  
  446. #ifdef _ISOC99_SOURCE
  447. /* Microsoft does not provide implementations for the following,
  448. * which are required by C99. Note in particular that Microsoft's
  449. * corresponding implementations of _snprintf() and _vsnprintf() are
  450. * NOT compatible with C99, but the following are; if you want the
  451. * MSVCRT behaviour, you MUST use the Microsoft "uglified" names.
  452. */
  453. __cdecl __MINGW_NOTHROW int snprintf (char *, size_t, const char *, ...);
  454. __cdecl __MINGW_NOTHROW int vsnprintf (char *, size_t, const char *, __VALIST);
  455.  
  456. __cdecl __MINGW_NOTHROW int vscanf (const char * __restrict__, __VALIST);
  457.  
  458. __cdecl __MINGW_NOTHROW
  459. int vfscanf (FILE * __restrict__, const char * __restrict__, __VALIST);
  460.  
  461. __cdecl __MINGW_NOTHROW
  462. int vsscanf (const char * __restrict__, const char * __restrict__, __VALIST);
  463.  
  464. #endif /* _ISOC99_SOURCE */
  465. #endif /* <stdio.h> included in its own right */
  466.  
  467. #if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
  468. /*
  469. * In MSVCR80.DLL, (and its descendants), Microsoft introduced variants
  470. * of the printf() functions, with names qualified by an underscore prefix
  471. * and "_p" or "_p_l" suffixes; implemented in Microsoft's typically crass,
  472. * non-standard, and non-portable fashion, these provide support for access
  473. * to printf() arguments in random order, as was standardised by POSIX as a
  474. * feature of the optional Extended Systems Interface (XSI) specification,
  475. * and is now required for conformity with the POSIX.1-2008 base standard.
  476. * Although these additional Microsoft functions were subsequently added
  477. * to MSVCRT.DLL, from Windows-Vista onward, and they are prototyped here,
  478. * MinGW applications are strenuously encouraged to avoid using them; a
  479. * much better alternative is to "#define _XOPEN_SOURCE 700" before any
  480. * system header is included, then use POSIX standard printf() functions
  481. * instead; this is both portable to many non-Windows platforms, and it
  482. * offers better compatibility with earlier Windows versions.
  483. */
  484. #ifndef __have_typedef_locale_t
  485. /* Note that some of the following require the opaque locale_t data type,
  486. * which we may obtain, by selective inclusion, from <locale.h>
  487. */
  488. #define __need_locale_t
  489. #include <locale.h>
  490. #endif
  491.  
  492. #ifdef _STDIO_H
  493. /* The following are to be declared only when <stdio.h> is explicitly
  494. * included; the first six are NOT dependent on locale_t...
  495. */
  496. _CRTIMP __cdecl __MINGW_NOTHROW
  497. int _printf_p (const char *, ...);
  498.  
  499. _CRTIMP __cdecl __MINGW_NOTHROW
  500. int _fprintf_p (FILE *, const char *, ...);
  501.  
  502. _CRTIMP __cdecl __MINGW_NOTHROW
  503. int _sprintf_p (char *, size_t, const char *, ...);
  504.  
  505. _CRTIMP __cdecl __MINGW_NOTHROW
  506. int _vprintf_p (const char *, __VALIST);
  507.  
  508. _CRTIMP __cdecl __MINGW_NOTHROW
  509. int _vfprintf_p (FILE *, const char *, __VALIST);
  510.  
  511. _CRTIMP __cdecl __MINGW_NOTHROW
  512. int _vsprintf_p (char *, size_t, const char *, __VALIST);
  513.  
  514. /* ...whereas the following six DO depend on locale_t.
  515. *
  516. * CAVEAT: unless you are linking with non-free MSVCR80.DLL, or one
  517. * of its later derivatives, good luck trying to use these; see the
  518. * explanation in <locale.t>, as to why you may be unable to create,
  519. * or otherwise acquire a reference to, a locale_t object.
  520. */
  521. _CRTIMP __cdecl __MINGW_NOTHROW
  522. int _printf_p_l (const char *, locale_t, ...);
  523.  
  524. _CRTIMP __cdecl __MINGW_NOTHROW
  525. int _fprintf_p_l (FILE *, const char *, locale_t, ...);
  526.  
  527. _CRTIMP __cdecl __MINGW_NOTHROW
  528. int _sprintf_p_l (char *, size_t, const char *, locale_t, ...);
  529.  
  530. _CRTIMP __cdecl __MINGW_NOTHROW
  531. int _vprintf_p_l (const char *, locale_t, __VALIST);
  532.  
  533. _CRTIMP __cdecl __MINGW_NOTHROW
  534. int _vfprintf_p_l (FILE *, const char *, locale_t, __VALIST);
  535.  
  536. _CRTIMP __cdecl __MINGW_NOTHROW
  537. int _vsprintf_p_l (char *, size_t, const char *, locale_t, __VALIST);
  538.  
  539. #endif /* <stdio.h> included in its own right */
  540. #endif /* MSVCR80.DLL and descendants, or MSVCRT.DLL since Vista */
  541.  
  542. #if ! (defined _STDIO_H && defined _WCHAR_H)
  543. #if __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
  544. /*
  545. * Wide character variants of the foregoing "positional parameter" printf()
  546. * functions; MSDN says that these should be declared when either <stdio.h>, or
  547. * <wchar.h> is included, so we make them selectively available to <wchar.h>,
  548. * but, just as in the foregoing, we advise against their use.
  549. */
  550. _CRTIMP __cdecl __MINGW_NOTHROW
  551. int _wprintf_p (const wchar_t *, ...);
  552.  
  553. _CRTIMP __cdecl __MINGW_NOTHROW
  554. int _fwprintf_p (FILE *, const wchar_t *, ...);
  555.  
  556. _CRTIMP __cdecl __MINGW_NOTHROW
  557. int _swprintf_p (wchar_t *, size_t, const wchar_t *, ...);
  558.  
  559. _CRTIMP __cdecl __MINGW_NOTHROW
  560. int _vwprintf_p (const wchar_t *, __VALIST);
  561.  
  562. _CRTIMP __cdecl __MINGW_NOTHROW
  563. int _vfwprintf_p (FILE *, const wchar_t *, __VALIST);
  564.  
  565. _CRTIMP __cdecl __MINGW_NOTHROW
  566. int _vswprintf_p (wchar_t *, size_t, const wchar_t *, __VALIST);
  567.  
  568. _CRTIMP __cdecl __MINGW_NOTHROW
  569. int _wprintf_p_l (const wchar_t *, locale_t, ...);
  570.  
  571. _CRTIMP __cdecl __MINGW_NOTHROW
  572. int _fwprintf_p_l (FILE *, const wchar_t *, locale_t, ...);
  573.  
  574. _CRTIMP __cdecl __MINGW_NOTHROW
  575. int _swprintf_p_l (wchar_t *, size_t, const wchar_t *, locale_t, ...);
  576.  
  577. _CRTIMP __cdecl __MINGW_NOTHROW
  578. int _vwprintf_p_l (const wchar_t *, locale_t, __VALIST);
  579.  
  580. _CRTIMP __cdecl __MINGW_NOTHROW
  581. int _vfwprintf_p_l (FILE *, const wchar_t *, locale_t, __VALIST);
  582.  
  583. _CRTIMP __cdecl __MINGW_NOTHROW
  584. int _vswprintf_p_l (wchar_t *, size_t, const wchar_t *, locale_t, __VALIST);
  585.  
  586. #endif /* MSVCR80.DLL and descendants, or MSVCRT.DLL since Vista */
  587. #endif /* ! (defined _STDIO_H && defined _WCHAR_H) */
  588. #ifdef _STDIO_H
  589. /* Once again, back to <stdio.h> specific declarations.
  590. *
  591. *
  592. * Formatted Input
  593. */
  594. _CRTIMP __cdecl __MINGW_NOTHROW int fscanf (FILE *, const char *, ...);
  595. _CRTIMP __cdecl __MINGW_NOTHROW int scanf (const char *, ...);
  596. _CRTIMP __cdecl __MINGW_NOTHROW int sscanf (const char *, const char *, ...);
  597.  
  598. /* Character Input and Output Functions
  599. */
  600. _CRTIMP __cdecl __MINGW_NOTHROW int fgetc (FILE *);
  601. _CRTIMP __cdecl __MINGW_NOTHROW char * fgets (char *, int, FILE *);
  602. _CRTIMP __cdecl __MINGW_NOTHROW int fputc (int, FILE *);
  603. _CRTIMP __cdecl __MINGW_NOTHROW int fputs (const char *, FILE *);
  604. _CRTIMP __cdecl __MINGW_NOTHROW char * gets (char *);
  605. _CRTIMP __cdecl __MINGW_NOTHROW int puts (const char *);
  606. _CRTIMP __cdecl __MINGW_NOTHROW int ungetc (int, FILE *);
  607.  
  608. /* Traditionally, getc and putc are defined as macros. but the
  609. * standard doesn't say that they must be macros. We use inline
  610. * functions here to allow the fast versions to be used in C++
  611. * with namespace qualification, eg., ::getc.
  612. *
  613. * NOTE: _filbuf and _flsbuf are not thread-safe.
  614. */
  615. _CRTIMP __cdecl __MINGW_NOTHROW int _filbuf (FILE *);
  616. _CRTIMP __cdecl __MINGW_NOTHROW int _flsbuf (int, FILE *);
  617.  
  618. #if !defined _MT
  619.  
  620. __CRT_INLINE __cdecl __MINGW_NOTHROW int getc (FILE *);
  621. __CRT_INLINE __cdecl __MINGW_NOTHROW int getc (FILE * __F)
  622. {
  623. return (--__F->_cnt >= 0)
  624. ? (int) (unsigned char) *__F->_ptr++
  625. : _filbuf (__F);
  626. }
  627.  
  628. __CRT_INLINE __cdecl __MINGW_NOTHROW int putc (int, FILE *);
  629. __CRT_INLINE __cdecl __MINGW_NOTHROW int putc (int __c, FILE * __F)
  630. {
  631. return (--__F->_cnt >= 0)
  632. ? (int) (unsigned char) (*__F->_ptr++ = (char)__c)
  633. : _flsbuf (__c, __F);
  634. }
  635.  
  636. __CRT_INLINE __cdecl __MINGW_NOTHROW int getchar (void);
  637. __CRT_INLINE __cdecl __MINGW_NOTHROW int getchar (void)
  638. {
  639. return (--stdin->_cnt >= 0)
  640. ? (int) (unsigned char) *stdin->_ptr++
  641. : _filbuf (stdin);
  642. }
  643.  
  644. __CRT_INLINE __cdecl __MINGW_NOTHROW int putchar(int);
  645. __CRT_INLINE __cdecl __MINGW_NOTHROW int putchar(int __c)
  646. {
  647. return (--stdout->_cnt >= 0)
  648. ? (int) (unsigned char) (*stdout->_ptr++ = (char)__c)
  649. : _flsbuf (__c, stdout);}
  650.  
  651. #else /* Use library functions. */
  652.  
  653. _CRTIMP __cdecl __MINGW_NOTHROW int getc (FILE *);
  654. _CRTIMP __cdecl __MINGW_NOTHROW int putc (int, FILE *);
  655. _CRTIMP __cdecl __MINGW_NOTHROW int getchar (void);
  656. _CRTIMP __cdecl __MINGW_NOTHROW int putchar (int);
  657.  
  658. #endif
  659.  
  660. /* Direct Input and Output Functions
  661. */
  662. _CRTIMP __cdecl __MINGW_NOTHROW size_t fread (void *, size_t, size_t, FILE *);
  663. _CRTIMP __cdecl __MINGW_NOTHROW size_t fwrite (const void *, size_t, size_t, FILE *);
  664.  
  665. /* File Positioning Functions
  666. */
  667. _CRTIMP __cdecl __MINGW_NOTHROW int fseek (FILE *, long, int);
  668. _CRTIMP __cdecl __MINGW_NOTHROW long ftell (FILE *);
  669. _CRTIMP __cdecl __MINGW_NOTHROW void rewind (FILE *);
  670.  
  671. #if _WIN32_WINNT >= _WIN32_WINNT_VISTA || __MSVCRT_VERSION__ >= __MSVCR80_DLL
  672. /*
  673. * Microsoft introduced a number of variations on fseek() and ftell(),
  674. * beginning with MSVCR80.DLL; the bare _fseeki64() and _ftelli64() were
  675. * subsequently integrated into MSVCRT.DLL, from Vista onward...
  676. */
  677. _CRTIMP __cdecl __MINGW_NOTHROW int _fseeki64 (FILE *, __int64, int);
  678. _CRTIMP __cdecl __MINGW_NOTHROW __int64 _ftelli64 (FILE *);
  679.  
  680. #if __MSVCRT_VERSION__ >= __MSVCR80_DLL
  681. /*
  682. * ...while the "nolock" variants remain exclusive to MSVCR80.DLL, and
  683. * its later MSVC specific derivatives.
  684. */
  685. _CRTIMP __cdecl __MINGW_NOTHROW int _fseek_nolock (FILE *, long, int);
  686. _CRTIMP __cdecl __MINGW_NOTHROW long _ftell_nolock (FILE *);
  687.  
  688. _CRTIMP __cdecl __MINGW_NOTHROW int _fseeki64_nolock (FILE *, __int64, int);
  689. _CRTIMP __cdecl __MINGW_NOTHROW __int64 _ftelli64_nolock (FILE *);
  690.  
  691. #endif /* MSVCR80.DLL and later derivatives ONLY */
  692. #endif /* MSVCR80.DLL and descendants, or MSVCRT.DLL since Vista */
  693.  
  694. #ifdef __USE_MINGW_FSEEK
  695. /* Workaround for a limitation on Win9x where a file is not zero padded
  696. * on write, following a seek beyond the original end of file; these are
  697. * implemented in libmingwex.a
  698. */
  699. __cdecl __MINGW_NOTHROW int __mingw_fseek (FILE *, long, int);
  700. __cdecl __MINGW_NOTHROW size_t __mingw_fwrite (const void *, size_t, size_t, FILE *);
  701.  
  702. #define fwrite(buffer, size, count, fp) __mingw_fwrite(buffer, size, count, fp)
  703. #define fseek(fp, offset, whence) __mingw_fseek(fp, offset, whence)
  704. #endif /* __USE_MINGW_FSEEK */
  705.  
  706. /* An opaque data type used for storing file positions... The contents of
  707. * this type are unknown, but we (the compiler) need to know the size
  708. * because the programmer using fgetpos and fsetpos will be setting aside
  709. * storage for fpos_t structres. Actually I tested using a byte array and
  710. * it is fairly evident that the fpos_t type is a long (in CRTDLL.DLL).
  711. * Perhaps an unsigned long? TODO? It's definitely a 64-bit number in
  712. * MSVCRT however, and for now `long long' will do.
  713. */
  714. #ifdef __MSVCRT__
  715. typedef long long fpos_t;
  716. #else
  717. typedef long fpos_t;
  718. #endif
  719.  
  720. _CRTIMP __cdecl __MINGW_NOTHROW int fgetpos (FILE *, fpos_t *);
  721. _CRTIMP __cdecl __MINGW_NOTHROW int fsetpos (FILE *, const fpos_t *);
  722.  
  723. /* Error Functions
  724. */
  725. _CRTIMP __cdecl __MINGW_NOTHROW int feof (FILE *);
  726. _CRTIMP __cdecl __MINGW_NOTHROW int ferror (FILE *);
  727.  
  728. #ifdef __cplusplus
  729. inline __cdecl __MINGW_NOTHROW int feof (FILE * __F){ return __F->_flag & _IOEOF; }
  730. inline __cdecl __MINGW_NOTHROW int ferror (FILE * __F){ return __F->_flag & _IOERR; }
  731. #else
  732. #define feof(__F) ((__F)->_flag & _IOEOF)
  733. #define ferror(__F) ((__F)->_flag & _IOERR)
  734. #endif
  735.  
  736. _CRTIMP __cdecl __MINGW_NOTHROW void clearerr (FILE *);
  737. _CRTIMP __cdecl __MINGW_NOTHROW void perror (const char *);
  738.  
  739.  
  740. #ifndef __STRICT_ANSI__
  741. /*
  742. * Pipes
  743. */
  744. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _popen (const char *, const char *);
  745. _CRTIMP __cdecl __MINGW_NOTHROW int _pclose (FILE *);
  746.  
  747. #ifndef NO_OLDNAMES
  748. _CRTIMP __cdecl __MINGW_NOTHROW FILE * popen (const char *, const char *);
  749. _CRTIMP __cdecl __MINGW_NOTHROW int pclose (FILE *);
  750. #endif
  751.  
  752. /* Other Non ANSI functions
  753. */
  754. _CRTIMP __cdecl __MINGW_NOTHROW int _flushall (void);
  755. _CRTIMP __cdecl __MINGW_NOTHROW int _fgetchar (void);
  756. _CRTIMP __cdecl __MINGW_NOTHROW int _fputchar (int);
  757. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _fdopen (int, const char *);
  758. _CRTIMP __cdecl __MINGW_NOTHROW int _fileno (FILE *);
  759. _CRTIMP __cdecl __MINGW_NOTHROW int _fcloseall (void);
  760. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _fsopen (const char *, const char *, int);
  761. #ifdef __MSVCRT__
  762. _CRTIMP __cdecl __MINGW_NOTHROW int _getmaxstdio (void);
  763. _CRTIMP __cdecl __MINGW_NOTHROW int _setmaxstdio (int);
  764. #endif
  765.  
  766. /* Microsoft introduced a capability in MSVCR80.DLL and later, to
  767. * set the minimum number of digits to be displayed in a printf()
  768. * floating point exponent; they retro-fitted this in MSVCRT.DLL,
  769. * from Windows-Vista onwards, but we provide our own wrappers in
  770. * libmingwex.a, which make it possible for us to emulate the API
  771. * for any version of MSVCRT.DLL (including WinXP and earlier).
  772. */
  773. #define _TWO_DIGIT_EXPONENT 1
  774.  
  775. /* While Microsoft define the preceding manifest constant, they
  776. * appear to neglect to define its complement, (for restoration
  777. * of their default exponent display format); for orthogonality,
  778. * we will provide this regardless of Microsoft's negligence.
  779. */
  780. #define _THREE_DIGIT_EXPONENT 0
  781.  
  782. /* Once again, unspecified by Microsoft, (and mostly redundant),
  783. * it is convenient to specify a combining mask for these.
  784. */
  785. #define _EXPONENT_DIGIT_MASK (_TWO_DIGIT_EXPONENT | _THREE_DIGIT_EXPONENT)
  786.  
  787. unsigned int __cdecl __mingw_get_output_format (void);
  788. unsigned int __cdecl __mingw_set_output_format (unsigned int);
  789.  
  790. /* Also appearing for the first time in MSVCR80.DLL, and then also
  791. * retro-fitted to MSVCRT.DLL from Windows-Vista onwards, was this
  792. * pair of functions to control availability of "%n" formatting in
  793. * the MSVCRT.DLL printf() family of functions, for which we also
  794. * provide our own DLL version agnostic wrappers:
  795. */
  796. int __cdecl __mingw_get_printf_count_output (void);
  797. int __cdecl __mingw_set_printf_count_output (int);
  798.  
  799. #if __MSVCRT_VERSION__ >= __MSVCR80_DLL
  800. /* When the user declares that MSVCR80.DLL features are supported,
  801. * we simply expose the corresponding APIs...
  802. */
  803. _CRTIMP unsigned int __cdecl __MINGW_NOTHROW _get_output_format (void);
  804. _CRTIMP unsigned int __cdecl __MINGW_NOTHROW _set_output_format (unsigned int);
  805.  
  806. _CRTIMP __cdecl __MINGW_NOTHROW int _get_printf_count_output (void);
  807. _CRTIMP __cdecl __MINGW_NOTHROW int _set_printf_count_output (int);
  808.  
  809. #else
  810. /* ...otherwise, we emulate the APIs, in a DLL version agnostic
  811. * manner, using our own implementation wrappers.
  812. */
  813. __CRT_ALIAS unsigned int __cdecl _get_output_format (void)
  814. { return __mingw_get_output_format (); }
  815.  
  816. __CRT_ALIAS unsigned int __cdecl _set_output_format (unsigned int __style)
  817. { return __mingw_set_output_format (__style); }
  818.  
  819. /* When using our own printf() implementation, "%n" format is ALWAYS
  820. * supported, so we make this API a no-op, reporting it to be so; for
  821. * the alternative case, when using MSVCRT.DLL's printf(), we delegate
  822. * to our wrapper API implementation, which will invoke the API function
  823. * calls within the DLL, if they are available, or persistently report
  824. * the state of "%n" formatting as DISABLED if they are not.
  825. */
  826. #if __USE_MINGW_ANSI_STDIO
  827. /* Note that __USE_MINGW_ANSI_STDIO is not guaranteed to resolve to any
  828. * symbol which will represent a compilable logic state; map it to this
  829. * alternative which will, for the true state...
  830. */
  831. # define __USE_MINGW_PRINTF 1
  832. #else
  833. /* ...and for the false.
  834. */
  835. # define __USE_MINGW_PRINTF 0
  836. #endif
  837.  
  838. __CRT_ALIAS int __cdecl _get_printf_count_output (void)
  839. { return __USE_MINGW_PRINTF ? 1 : __mingw_get_printf_count_output (); }
  840.  
  841. __CRT_ALIAS int __cdecl _set_printf_count_output (int __mode)
  842. { return __USE_MINGW_PRINTF ? 1 : __mingw_set_printf_count_output (__mode); }
  843. #endif
  844.  
  845. #ifndef _NO_OLDNAMES
  846. _CRTIMP __cdecl __MINGW_NOTHROW int fgetchar (void);
  847. _CRTIMP __cdecl __MINGW_NOTHROW int fputchar (int);
  848. _CRTIMP __cdecl __MINGW_NOTHROW FILE * fdopen (int, const char *);
  849. _CRTIMP __cdecl __MINGW_NOTHROW int fileno (FILE *);
  850. #endif /* !_NO_OLDNAMES */
  851.  
  852. #define _fileno(__F) ((__F)->_file)
  853. #ifndef _NO_OLDNAMES
  854. #define fileno(__F) ((__F)->_file)
  855. #endif
  856.  
  857. #if defined (__MSVCRT__) && ! defined (__NO_MINGW_LFS)
  858. __CRT_ALIAS FILE * __cdecl __MINGW_NOTHROW fopen64 (const char *, const char *);
  859. __CRT_ALIAS __JMPSTUB__(( FUNCTION = fopen64, REMAPPED = fopen ))
  860. FILE * __cdecl __MINGW_NOTHROW fopen64 (const char * filename, const char * mode)
  861. { return fopen (filename, mode); }
  862.  
  863. int __cdecl __MINGW_NOTHROW fseeko64 (FILE *, __off64_t, int);
  864.  
  865. #ifdef __USE_MINGW_FSEEK
  866. int __cdecl __MINGW_NOTHROW __mingw_fseeko64 (FILE *, __off64_t, int);
  867. #define fseeko64(fp, offset, whence) __mingw_fseeko64(fp, offset, whence)
  868. #endif
  869.  
  870. __CRT_ALIAS __off64_t __cdecl __MINGW_NOTHROW ftello64 (FILE *);
  871. __CRT_ALIAS __LIBIMPL__(( FUNCTION = ftello64 ))
  872. __off64_t __cdecl __MINGW_NOTHROW ftello64 (FILE * stream)
  873. { fpos_t __pos; return (fgetpos(stream, &__pos)) ? -1LL : (__off64_t)(__pos); }
  874.  
  875. #endif /* __MSVCRT__ && !__NO_MINGW_LFS */
  876. #endif /* !__STRICT_ANSI__ */
  877. #endif /* _STDIO_H */
  878.  
  879. #if ! (defined _STDIO_H && defined _WCHAR_H)
  880. /* The following are declared when including either <stdio.h> or <wchar.h>.
  881. * If both header include guards are now in place, then we must currently be
  882. * including <stdio.h> in its own right, having already processed this block
  883. * during prior partial inclusion by <wchar.h>; there is no need to process
  884. * it a second time.
  885. */
  886. _CRTIMP __cdecl __MINGW_NOTHROW int fwprintf (FILE *, const wchar_t *, ...);
  887. _CRTIMP __cdecl __MINGW_NOTHROW int wprintf (const wchar_t *, ...);
  888. _CRTIMP __cdecl __MINGW_NOTHROW int vfwprintf (FILE *, const wchar_t *, __VALIST);
  889. _CRTIMP __cdecl __MINGW_NOTHROW int vwprintf (const wchar_t *, __VALIST);
  890. _CRTIMP __cdecl __MINGW_NOTHROW int _snwprintf (wchar_t *, size_t, const wchar_t *, ...);
  891. _CRTIMP __cdecl __MINGW_NOTHROW int _vscwprintf (const wchar_t *, __VALIST);
  892. _CRTIMP __cdecl __MINGW_NOTHROW int _vsnwprintf (wchar_t *, size_t, const wchar_t *, __VALIST);
  893. _CRTIMP __cdecl __MINGW_NOTHROW int fwscanf (FILE *, const wchar_t *, ...);
  894. _CRTIMP __cdecl __MINGW_NOTHROW int wscanf (const wchar_t *, ...);
  895. _CRTIMP __cdecl __MINGW_NOTHROW int swscanf (const wchar_t *, const wchar_t *, ...);
  896. _CRTIMP __cdecl __MINGW_NOTHROW wint_t fgetwc (FILE *);
  897. _CRTIMP __cdecl __MINGW_NOTHROW wint_t fputwc (wchar_t, FILE *);
  898. _CRTIMP __cdecl __MINGW_NOTHROW wint_t ungetwc (wchar_t, FILE *);
  899.  
  900. #ifndef __STRICT_ANSI__
  901. /* These differ from the ISO C prototypes, which have a maxlen parameter (like snprintf).
  902. */
  903. _CRTIMP __cdecl __MINGW_NOTHROW int swprintf (wchar_t *, const wchar_t *, ...);
  904. _CRTIMP __cdecl __MINGW_NOTHROW int vswprintf (wchar_t *, const wchar_t *, __VALIST);
  905. #endif
  906.  
  907. #ifdef __MSVCRT__
  908. _CRTIMP __cdecl __MINGW_NOTHROW wchar_t * fgetws (wchar_t *, int, FILE *);
  909. _CRTIMP __cdecl __MINGW_NOTHROW int fputws (const wchar_t *, FILE *);
  910. _CRTIMP __cdecl __MINGW_NOTHROW wint_t getwc (FILE *);
  911. _CRTIMP __cdecl __MINGW_NOTHROW wint_t getwchar (void);
  912. _CRTIMP __cdecl __MINGW_NOTHROW wint_t putwc (wint_t, FILE *);
  913. _CRTIMP __cdecl __MINGW_NOTHROW wint_t putwchar (wint_t);
  914.  
  915. #ifndef __STRICT_ANSI__
  916. _CRTIMP __cdecl __MINGW_NOTHROW wchar_t * _getws (wchar_t *);
  917. _CRTIMP __cdecl __MINGW_NOTHROW int _putws (const wchar_t *);
  918. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _wfdopen(int, const wchar_t *);
  919. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _wfopen (const wchar_t *, const wchar_t *);
  920. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _wfreopen (const wchar_t *, const wchar_t *, FILE *);
  921. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _wfsopen (const wchar_t *, const wchar_t *, int);
  922. _CRTIMP __cdecl __MINGW_NOTHROW wchar_t * _wtmpnam (wchar_t *);
  923. _CRTIMP __cdecl __MINGW_NOTHROW wchar_t * _wtempnam (const wchar_t *, const wchar_t *);
  924. _CRTIMP __cdecl __MINGW_NOTHROW int _wrename (const wchar_t *, const wchar_t *);
  925. _CRTIMP __cdecl __MINGW_NOTHROW int _wremove (const wchar_t *);
  926. _CRTIMP __cdecl __MINGW_NOTHROW void _wperror (const wchar_t *);
  927. _CRTIMP __cdecl __MINGW_NOTHROW FILE * _wpopen (const wchar_t *, const wchar_t *);
  928.  
  929. #endif /* !__STRICT_ANSI__ */
  930. #endif /* __MSVCRT__ */
  931.  
  932. #ifdef _ISOC99_SOURCE
  933. __cdecl __MINGW_NOTHROW int snwprintf (wchar_t *, size_t, const wchar_t *, ...);
  934. __cdecl __MINGW_NOTHROW int vsnwprintf (wchar_t *, size_t, const wchar_t *, __VALIST);
  935.  
  936. #ifndef __NO_INLINE__
  937. __CRT_INLINE __cdecl __MINGW_NOTHROW
  938. __JMPSTUB__(( FUNCTION = vsnwprintf, REMAPPED = _vsnwprintf ))
  939. int vsnwprintf (wchar_t *__s, size_t __n, const wchar_t *__fmt, __VALIST __arg)
  940. { return _vsnwprintf ( __s, __n, __fmt, __arg); }
  941. #endif
  942.  
  943. __cdecl __MINGW_NOTHROW int vwscanf (const wchar_t *__restrict__, __VALIST);
  944. __cdecl __MINGW_NOTHROW
  945. int vfwscanf (FILE *__restrict__, const wchar_t *__restrict__, __VALIST);
  946. __cdecl __MINGW_NOTHROW
  947. int vswscanf (const wchar_t *__restrict__, const wchar_t * __restrict__, __VALIST);
  948.  
  949. #endif /* _ISOC99_SOURCE */
  950. #endif /* ! (_STDIO_H && _WCHAR_H) */
  951.  
  952. #if defined _STDIO_H && ! defined __STRICT_ANSI__
  953. #if defined __MSVCRT__ && ! defined _NO_OLDNAMES
  954. _CRTIMP __cdecl __MINGW_NOTHROW FILE * wpopen (const wchar_t *, const wchar_t *);
  955. #endif
  956.  
  957. /* Other non-ANSI wide character functions...
  958. */
  959. _CRTIMP __cdecl __MINGW_NOTHROW wint_t _fgetwchar (void);
  960. _CRTIMP __cdecl __MINGW_NOTHROW wint_t _fputwchar (wint_t);
  961. _CRTIMP __cdecl __MINGW_NOTHROW int _getw (FILE *);
  962. _CRTIMP __cdecl __MINGW_NOTHROW int _putw (int, FILE *);
  963.  
  964. #ifndef _NO_OLDNAMES
  965. /* ...and their original names, before Microsoft uglification...
  966. */
  967. _CRTIMP __cdecl __MINGW_NOTHROW wint_t fgetwchar (void);
  968. _CRTIMP __cdecl __MINGW_NOTHROW wint_t fputwchar (wint_t);
  969. _CRTIMP __cdecl __MINGW_NOTHROW int getw (FILE *);
  970. _CRTIMP __cdecl __MINGW_NOTHROW int putw (int, FILE *);
  971.  
  972. #endif /* !_NO_OLDNAMES */
  973. #endif /* !__STRICT_ANSI__ */
  974.  
  975. _END_C_DECLS
  976.  
  977. #endif /* ! RC_INVOKED */
  978. #endif /* !_STDIO_H: $RCSfile: stdio.h,v $: end of file */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement