1 // -*- C++ -*-
2 //===---------------------------- stdio.h ---------------------------------===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is dual licensed under the MIT and the University of Illinois Open
7 // Source Licenses. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10 
11 #if defined(__need_FILE) || defined(__need___FILE)
12 
13 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
14 #pragma GCC system_header
15 #endif
16 
17 #include_next <stdio.h>
18 
19 #elif !defined(_LIBCPP_STDIO_H)
20 #define _LIBCPP_STDIO_H
21 
22 /*
23     stdio.h synopsis
24 
25 Macros:
26 
27     BUFSIZ
28     EOF
29     FILENAME_MAX
30     FOPEN_MAX
31     L_tmpnam
32     NULL
33     SEEK_CUR
34     SEEK_END
35     SEEK_SET
36     TMP_MAX
37     _IOFBF
38     _IOLBF
39     _IONBF
40     stderr
41     stdin
42     stdout
43 
44 Types:
45 
46 FILE
47 fpos_t
48 size_t
49 
50 int remove(const char* filename);
51 int rename(const char* old, const char* new);
52 FILE* tmpfile(void);
53 char* tmpnam(char* s);
54 int fclose(FILE* stream);
55 int fflush(FILE* stream);
56 FILE* fopen(const char* restrict filename, const char* restrict mode);
57 FILE* freopen(const char* restrict filename, const char * restrict mode,
58               FILE * restrict stream);
59 void setbuf(FILE* restrict stream, char* restrict buf);
60 int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size);
61 int fprintf(FILE* restrict stream, const char* restrict format, ...);
62 int fscanf(FILE* restrict stream, const char * restrict format, ...);
63 int printf(const char* restrict format, ...);
64 int scanf(const char* restrict format, ...);
65 int snprintf(char* restrict s, size_t n, const char* restrict format, ...);    // C99
66 int sprintf(char* restrict s, const char* restrict format, ...);
67 int sscanf(const char* restrict s, const char* restrict format, ...);
68 int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg);
69 int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg);  // C99
70 int vprintf(const char* restrict format, va_list arg);
71 int vscanf(const char* restrict format, va_list arg);                          // C99
72 int vsnprintf(char* restrict s, size_t n, const char* restrict format,         // C99
73               va_list arg);
74 int vsprintf(char* restrict s, const char* restrict format, va_list arg);
75 int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99
76 int fgetc(FILE* stream);
77 char* fgets(char* restrict s, int n, FILE* restrict stream);
78 int fputc(int c, FILE* stream);
79 int fputs(const char* restrict s, FILE* restrict stream);
80 int getc(FILE* stream);
81 int getchar(void);
82 char* gets(char* s);  // removed in C++14
83 int putc(int c, FILE* stream);
84 int putchar(int c);
85 int puts(const char* s);
86 int ungetc(int c, FILE* stream);
87 size_t fread(void* restrict ptr, size_t size, size_t nmemb,
88              FILE* restrict stream);
89 size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb,
90               FILE* restrict stream);
91 int fgetpos(FILE* restrict stream, fpos_t* restrict pos);
92 int fseek(FILE* stream, long offset, int whence);
93 int fsetpos(FILE*stream, const fpos_t* pos);
94 long ftell(FILE* stream);
95 void rewind(FILE* stream);
96 void clearerr(FILE* stream);
97 int feof(FILE* stream);
98 int ferror(FILE* stream);
99 void perror(const char* s);
100 */
101 
102 #include <__config>
103 
104 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
105 #pragma GCC system_header
106 #endif
107 
108 #include_next <stdio.h>
109 
110 #ifdef __cplusplus
111 
112 #undef getc
113 #undef putc
114 #undef clearerr
115 #undef feof
116 #undef ferror
117 
118 #endif
119 
120 #endif  // _LIBCPP_STDIO_H
121