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