1 #ifndef _STDIO_H 2 #define _STDIO_H 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 #include <features.h> 9 10 #define __NEED_FILE 11 #define __NEED___isoc_va_list 12 #define __NEED_size_t 13 14 #if __STDC_VERSION__ < 201112L 15 #define __NEED_struct__IO_FILE 16 #endif 17 18 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 19 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 20 || defined(_BSD_SOURCE) 21 #define __NEED_ssize_t 22 #define __NEED_off_t 23 #define __NEED_va_list 24 #endif 25 26 #include <bits/alltypes.h> 27 28 #if __cplusplus >= 201103L 29 #define NULL nullptr 30 #elif defined(__cplusplus) 31 #define NULL 0L 32 #else 33 #define NULL ((void*)0) 34 #endif 35 36 #undef EOF 37 #define EOF (-1) 38 39 #undef SEEK_SET 40 #undef SEEK_CUR 41 #undef SEEK_END 42 #define SEEK_SET 0 43 #define SEEK_CUR 1 44 #define SEEK_END 2 45 46 #define _IOFBF 0 47 #define _IOLBF 1 48 #define _IONBF 2 49 50 #define BUFSIZ 1024 51 #define FILENAME_MAX 4096 52 #define FOPEN_MAX 1000 53 #define TMP_MAX 10000 54 #define L_tmpnam 20 55 56 typedef union _G_fpos64_t { 57 char __opaque[16]; 58 long long __lldata; 59 double __align; 60 } fpos_t; 61 62 extern FILE *const stdin; 63 extern FILE *const stdout; 64 extern FILE *const stderr; 65 66 #define stdin (stdin) 67 #define stdout (stdout) 68 #define stderr (stderr) 69 70 FILE *fopen(const char *__restrict, const char *__restrict); 71 FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict); 72 int fclose(FILE *); 73 74 int remove(const char *); 75 int rename(const char *, const char *); 76 77 int feof(FILE *); 78 int ferror(FILE *); 79 int fflush(FILE *); 80 void clearerr(FILE *); 81 82 int fseek(FILE *, long, int); 83 long ftell(FILE *); 84 void rewind(FILE *); 85 86 int fgetpos(FILE *__restrict, fpos_t *__restrict); 87 int fsetpos(FILE *, const fpos_t *); 88 89 size_t fread(void *__restrict, size_t, size_t, FILE *__restrict); 90 size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict); 91 92 int fgetc(FILE *); 93 int getc(FILE *); 94 int getchar(void); 95 int ungetc(int, FILE *); 96 97 int fputc(int, FILE *); 98 int putc(int, FILE *); 99 int putchar(int); 100 101 char *fgets(char *__restrict, int, FILE *__restrict); 102 #if __STDC_VERSION__ < 201112L 103 char *gets(char *); 104 #endif 105 106 int fputs(const char *__restrict, FILE *__restrict); 107 int puts(const char *); 108 109 int printf(const char *__restrict, ...); 110 int fprintf(FILE *__restrict, const char *__restrict, ...); 111 int sprintf(char *__restrict, const char *__restrict, ...); 112 int snprintf(char *__restrict, size_t, const char *__restrict, ...); 113 114 int vprintf(const char *__restrict, __isoc_va_list); 115 int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list); 116 int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list); 117 int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list); 118 119 int scanf(const char *__restrict, ...); 120 int fscanf(FILE *__restrict, const char *__restrict, ...); 121 int sscanf(const char *__restrict, const char *__restrict, ...); 122 int vscanf(const char *__restrict, __isoc_va_list); 123 int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list); 124 int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list); 125 126 void perror(const char *); 127 128 int setvbuf(FILE *__restrict, char *__restrict, int, size_t); 129 void setbuf(FILE *__restrict, char *__restrict); 130 131 char *tmpnam(char *); 132 FILE *tmpfile(void); 133 134 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 135 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 136 || defined(_BSD_SOURCE) 137 FILE *fmemopen(void *__restrict, size_t, const char *__restrict); 138 FILE *open_memstream(char **, size_t *); 139 FILE *fdopen(int, const char *); 140 FILE *popen(const char *, const char *); 141 int pclose(FILE *); 142 int fileno(FILE *); 143 int fseeko(FILE *, off_t, int); 144 off_t ftello(FILE *); 145 int dprintf(int, const char *__restrict, ...); 146 int vdprintf(int, const char *__restrict, __isoc_va_list); 147 void flockfile(FILE *); 148 int ftrylockfile(FILE *); 149 void funlockfile(FILE *); 150 int getc_unlocked(FILE *); 151 int getchar_unlocked(void); 152 int putc_unlocked(int, FILE *); 153 int putchar_unlocked(int); 154 ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict); 155 ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict); 156 int renameat(int, const char *, int, const char *); 157 char *ctermid(char *); 158 #define L_ctermid 20 159 #endif 160 161 162 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 163 || defined(_BSD_SOURCE) 164 #define P_tmpdir "/tmp" 165 char *tempnam(const char *, const char *); 166 #endif 167 168 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 169 #define L_cuserid 20 170 char *cuserid(char *); 171 void setlinebuf(FILE *); 172 void setbuffer(FILE *, char *, size_t); 173 int fgetc_unlocked(FILE *); 174 int fputc_unlocked(int, FILE *); 175 int fflush_unlocked(FILE *); 176 size_t fread_unlocked(void *, size_t, size_t, FILE *); 177 size_t fwrite_unlocked(const void *, size_t, size_t, FILE *); 178 void clearerr_unlocked(FILE *); 179 int feof_unlocked(FILE *); 180 int ferror_unlocked(FILE *); 181 int fileno_unlocked(FILE *); 182 int getw(FILE *); 183 int putw(int, FILE *); 184 char *fgetln(FILE *, size_t *); 185 int asprintf(char **, const char *, ...); 186 int vasprintf(char **, const char *, __isoc_va_list); 187 #endif 188 189 #ifdef _GNU_SOURCE 190 char *fgets_unlocked(char *, int, FILE *); 191 int fputs_unlocked(const char *, FILE *); 192 193 typedef ssize_t (cookie_read_function_t)(void *, char *, size_t); 194 typedef ssize_t (cookie_write_function_t)(void *, const char *, size_t); 195 typedef int (cookie_seek_function_t)(void *, off_t *, int); 196 typedef int (cookie_close_function_t)(void *); 197 198 typedef struct _IO_cookie_io_functions_t { 199 cookie_read_function_t *read; 200 cookie_write_function_t *write; 201 cookie_seek_function_t *seek; 202 cookie_close_function_t *close; 203 } cookie_io_functions_t; 204 205 FILE *fopencookie(void *, const char *, cookie_io_functions_t); 206 #endif 207 208 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) 209 #define tmpfile64 tmpfile 210 #define fopen64 fopen 211 #define freopen64 freopen 212 #define fseeko64 fseeko 213 #define ftello64 ftello 214 #define fgetpos64 fgetpos 215 #define fsetpos64 fsetpos 216 #define fpos64_t fpos_t 217 #define off64_t off_t 218 #endif 219 220 #ifdef __cplusplus 221 } 222 #endif 223 224 #endif 225