1570af302Sopenharmony_ci#ifndef _STDIO_H
2570af302Sopenharmony_ci#define _STDIO_H
3570af302Sopenharmony_ci
4570af302Sopenharmony_ci#ifdef __cplusplus
5570af302Sopenharmony_ciextern "C" {
6570af302Sopenharmony_ci#endif
7570af302Sopenharmony_ci
8570af302Sopenharmony_ci#include <features.h>
9570af302Sopenharmony_ci
10570af302Sopenharmony_ci#define __NEED_FILE
11570af302Sopenharmony_ci#define __NEED___isoc_va_list
12570af302Sopenharmony_ci#define __NEED_size_t
13570af302Sopenharmony_ci
14570af302Sopenharmony_ci#if __STDC_VERSION__ < 201112L
15570af302Sopenharmony_ci#define __NEED_struct__IO_FILE
16570af302Sopenharmony_ci#endif
17570af302Sopenharmony_ci
18570af302Sopenharmony_ci#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
19570af302Sopenharmony_ci || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
20570af302Sopenharmony_ci || defined(_BSD_SOURCE)
21570af302Sopenharmony_ci#define __NEED_ssize_t
22570af302Sopenharmony_ci#define __NEED_off_t
23570af302Sopenharmony_ci#define __NEED_va_list
24570af302Sopenharmony_ci#endif
25570af302Sopenharmony_ci
26570af302Sopenharmony_ci#include <bits/alltypes.h>
27570af302Sopenharmony_ci
28570af302Sopenharmony_ci#if __cplusplus >= 201103L
29570af302Sopenharmony_ci#define NULL nullptr
30570af302Sopenharmony_ci#elif defined(__cplusplus)
31570af302Sopenharmony_ci#define NULL 0L
32570af302Sopenharmony_ci#else
33570af302Sopenharmony_ci#define NULL ((void*)0)
34570af302Sopenharmony_ci#endif
35570af302Sopenharmony_ci
36570af302Sopenharmony_ci#undef EOF
37570af302Sopenharmony_ci#define EOF (-1)
38570af302Sopenharmony_ci
39570af302Sopenharmony_ci#undef SEEK_SET
40570af302Sopenharmony_ci#undef SEEK_CUR
41570af302Sopenharmony_ci#undef SEEK_END
42570af302Sopenharmony_ci#define SEEK_SET 0
43570af302Sopenharmony_ci#define SEEK_CUR 1
44570af302Sopenharmony_ci#define SEEK_END 2
45570af302Sopenharmony_ci
46570af302Sopenharmony_ci#define _IOFBF 0
47570af302Sopenharmony_ci#define _IOLBF 1
48570af302Sopenharmony_ci#define _IONBF 2
49570af302Sopenharmony_ci
50570af302Sopenharmony_ci#define BUFSIZ (8 * 1024)
51570af302Sopenharmony_ci#define FILENAME_MAX 4096
52570af302Sopenharmony_ci#define FOPEN_MAX 20
53570af302Sopenharmony_ci#define TMP_MAX 308915776
54570af302Sopenharmony_ci#define L_tmpnam 4096
55570af302Sopenharmony_ci
56570af302Sopenharmony_citypedef union _G_fpos64_t {
57570af302Sopenharmony_ci	char __opaque[16];
58570af302Sopenharmony_ci	long long __lldata;
59570af302Sopenharmony_ci	double __align;
60570af302Sopenharmony_ci} fpos_t;
61570af302Sopenharmony_ci
62570af302Sopenharmony_ciextern FILE *const stdin;
63570af302Sopenharmony_ciextern FILE *const stdout;
64570af302Sopenharmony_ciextern FILE *const stderr;
65570af302Sopenharmony_ci
66570af302Sopenharmony_ci#define stdin  (stdin)
67570af302Sopenharmony_ci#define stdout (stdout)
68570af302Sopenharmony_ci#define stderr (stderr)
69570af302Sopenharmony_ci
70570af302Sopenharmony_ciFILE *fopen(const char *__restrict, const char *__restrict);
71570af302Sopenharmony_ciFILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict);
72570af302Sopenharmony_ciint fclose(FILE *);
73570af302Sopenharmony_ci
74570af302Sopenharmony_ciint remove(const char *);
75570af302Sopenharmony_ciint rename(const char *, const char *);
76570af302Sopenharmony_ci
77570af302Sopenharmony_ciint feof(FILE *);
78570af302Sopenharmony_ciint ferror(FILE *);
79570af302Sopenharmony_ciint fflush(FILE *);
80570af302Sopenharmony_civoid clearerr(FILE *);
81570af302Sopenharmony_ci
82570af302Sopenharmony_ciint fseek(FILE *, long, int);
83570af302Sopenharmony_cilong ftell(FILE *);
84570af302Sopenharmony_civoid rewind(FILE *);
85570af302Sopenharmony_ci
86570af302Sopenharmony_ciint fgetpos(FILE *__restrict, fpos_t *__restrict);
87570af302Sopenharmony_ciint fsetpos(FILE *, const fpos_t *);
88570af302Sopenharmony_ci
89570af302Sopenharmony_cisize_t fread(void *__restrict, size_t, size_t, FILE *__restrict);
90570af302Sopenharmony_cisize_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict);
91570af302Sopenharmony_ci
92570af302Sopenharmony_ciint fgetc(FILE *);
93570af302Sopenharmony_ciint getc(FILE *);
94570af302Sopenharmony_ciint getchar(void);
95570af302Sopenharmony_ciint ungetc(int, FILE *);
96570af302Sopenharmony_ci
97570af302Sopenharmony_ciint fputc(int, FILE *);
98570af302Sopenharmony_ciint putc(int, FILE *);
99570af302Sopenharmony_ciint putchar(int);
100570af302Sopenharmony_ci
101570af302Sopenharmony_cichar *fgets(char *__restrict, int, FILE *__restrict);
102570af302Sopenharmony_ci#if __STDC_VERSION__ < 201112L
103570af302Sopenharmony_cichar *gets(char *);
104570af302Sopenharmony_ci#endif
105570af302Sopenharmony_ci
106570af302Sopenharmony_ciint fputs(const char *__restrict, FILE *__restrict);
107570af302Sopenharmony_ciint puts(const char *);
108570af302Sopenharmony_ci
109570af302Sopenharmony_ciint printf(const char *__restrict, ...);
110570af302Sopenharmony_ciint fprintf(FILE *__restrict, const char *__restrict, ...);
111570af302Sopenharmony_ciint sprintf(char *__restrict, const char *__restrict, ...);
112570af302Sopenharmony_ciint snprintf(char *__restrict, size_t, const char *__restrict, ...);
113570af302Sopenharmony_ci
114570af302Sopenharmony_ciint vprintf(const char *__restrict, __isoc_va_list);
115570af302Sopenharmony_ciint vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list);
116570af302Sopenharmony_ciint vsprintf(char *__restrict, const char *__restrict, __isoc_va_list);
117570af302Sopenharmony_ciint vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list);
118570af302Sopenharmony_ci
119570af302Sopenharmony_ciint scanf(const char *__restrict, ...);
120570af302Sopenharmony_ciint fscanf(FILE *__restrict, const char *__restrict, ...);
121570af302Sopenharmony_ciint sscanf(const char *__restrict, const char *__restrict, ...);
122570af302Sopenharmony_ciint vscanf(const char *__restrict, __isoc_va_list);
123570af302Sopenharmony_ciint vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list);
124570af302Sopenharmony_ciint vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list);
125570af302Sopenharmony_ci
126570af302Sopenharmony_civoid perror(const char *);
127570af302Sopenharmony_ci
128570af302Sopenharmony_ciint setvbuf(FILE *__restrict, char *__restrict, int, size_t);
129570af302Sopenharmony_civoid setbuf(FILE *__restrict, char *__restrict);
130570af302Sopenharmony_ci
131570af302Sopenharmony_cichar *tmpnam(char *);
132570af302Sopenharmony_ciFILE *tmpfile(void);
133570af302Sopenharmony_ci
134570af302Sopenharmony_ci#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
135570af302Sopenharmony_ci || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
136570af302Sopenharmony_ci || defined(_BSD_SOURCE)
137570af302Sopenharmony_ciFILE *fmemopen(void *__restrict, size_t, const char *__restrict);
138570af302Sopenharmony_ciFILE *open_memstream(char **, size_t *);
139570af302Sopenharmony_ciFILE *fdopen(int, const char *);
140570af302Sopenharmony_ciFILE *popen(const char *, const char *);
141570af302Sopenharmony_ciint pclose(FILE *);
142570af302Sopenharmony_ciint fileno(FILE *);
143570af302Sopenharmony_ciint fseeko(FILE *, off_t, int);
144570af302Sopenharmony_cioff_t ftello(FILE *);
145570af302Sopenharmony_civoid dprintf(const char *__restrict, ...);
146570af302Sopenharmony_ciint vdprintf(int, const char *__restrict, __isoc_va_list);
147570af302Sopenharmony_civoid flockfile(FILE *);
148570af302Sopenharmony_ciint ftrylockfile(FILE *);
149570af302Sopenharmony_civoid funlockfile(FILE *);
150570af302Sopenharmony_ciint getc_unlocked(FILE *);
151570af302Sopenharmony_ciint getchar_unlocked(void);
152570af302Sopenharmony_ciint putc_unlocked(int, FILE *);
153570af302Sopenharmony_ciint putchar_unlocked(int);
154570af302Sopenharmony_cissize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict);
155570af302Sopenharmony_cissize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict);
156570af302Sopenharmony_ciint renameat(int, const char *, int, const char *);
157570af302Sopenharmony_cichar *ctermid(char *);
158570af302Sopenharmony_ci#define L_ctermid 20
159570af302Sopenharmony_ci#endif
160570af302Sopenharmony_ci
161570af302Sopenharmony_ci
162570af302Sopenharmony_ci#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
163570af302Sopenharmony_ci || defined(_BSD_SOURCE)
164570af302Sopenharmony_ci#define P_tmpdir "/tmp"
165570af302Sopenharmony_cichar *tempnam(const char *, const char *);
166570af302Sopenharmony_ci#endif
167570af302Sopenharmony_ci
168570af302Sopenharmony_ci#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
169570af302Sopenharmony_ci#define L_cuserid 20
170570af302Sopenharmony_cichar *cuserid(char *);
171570af302Sopenharmony_civoid setlinebuf(FILE *);
172570af302Sopenharmony_civoid setbuffer(FILE *, char *, size_t);
173570af302Sopenharmony_ciint fgetc_unlocked(FILE *);
174570af302Sopenharmony_ciint fputc_unlocked(int, FILE *);
175570af302Sopenharmony_ciint fflush_unlocked(FILE *);
176570af302Sopenharmony_cisize_t fread_unlocked(void *, size_t, size_t, FILE *);
177570af302Sopenharmony_cisize_t fwrite_unlocked(const void *, size_t, size_t, FILE *);
178570af302Sopenharmony_civoid clearerr_unlocked(FILE *);
179570af302Sopenharmony_ciint feof_unlocked(FILE *);
180570af302Sopenharmony_ciint ferror_unlocked(FILE *);
181570af302Sopenharmony_ciint fileno_unlocked(FILE *);
182570af302Sopenharmony_ciint getw(FILE *);
183570af302Sopenharmony_ciint putw(int, FILE *);
184570af302Sopenharmony_cichar *fgetln(FILE *, size_t *);
185570af302Sopenharmony_ciint asprintf(char **, const char *, ...);
186570af302Sopenharmony_ciint vasprintf(char **, const char *, __isoc_va_list);
187570af302Sopenharmony_ci#endif
188570af302Sopenharmony_ci
189570af302Sopenharmony_ci#ifdef _GNU_SOURCE
190570af302Sopenharmony_cichar *fgets_unlocked(char *, int, FILE *);
191570af302Sopenharmony_ciint fputs_unlocked(const char *, FILE *);
192570af302Sopenharmony_ci
193570af302Sopenharmony_citypedef ssize_t (cookie_read_function_t)(void *, char *, size_t);
194570af302Sopenharmony_citypedef ssize_t (cookie_write_function_t)(void *, const char *, size_t);
195570af302Sopenharmony_citypedef int (cookie_seek_function_t)(void *, off_t *, int);
196570af302Sopenharmony_citypedef int (cookie_close_function_t)(void *);
197570af302Sopenharmony_ci
198570af302Sopenharmony_citypedef struct _IO_cookie_io_functions_t {
199570af302Sopenharmony_ci	cookie_read_function_t *read;
200570af302Sopenharmony_ci	cookie_write_function_t *write;
201570af302Sopenharmony_ci	cookie_seek_function_t *seek;
202570af302Sopenharmony_ci	cookie_close_function_t *close;
203570af302Sopenharmony_ci} cookie_io_functions_t;
204570af302Sopenharmony_ci
205570af302Sopenharmony_ciFILE *fopencookie(void *, const char *, cookie_io_functions_t);
206570af302Sopenharmony_ci#endif
207570af302Sopenharmony_ci
208570af302Sopenharmony_ci#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
209570af302Sopenharmony_ci#define tmpfile64 tmpfile
210570af302Sopenharmony_ci#define freopen64 freopen
211570af302Sopenharmony_ci#define fseeko64 fseeko
212570af302Sopenharmony_ci#define ftello64 ftello
213570af302Sopenharmony_ci#define fgetpos64 fgetpos
214570af302Sopenharmony_ci#define fsetpos64 fsetpos
215570af302Sopenharmony_ci#define fpos64_t fpos_t
216570af302Sopenharmony_ci#endif
217570af302Sopenharmony_ci
218570af302Sopenharmony_ci#ifdef __cplusplus
219570af302Sopenharmony_ci}
220570af302Sopenharmony_ci#endif
221570af302Sopenharmony_ci
222570af302Sopenharmony_ci#endif
223