10b57cec5SDimitry Andric// -*- C++ -*- 2349cc55cSDimitry Andric//===----------------------------------------------------------------------===// 30b57cec5SDimitry Andric// 40b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 50b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 60b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 70b57cec5SDimitry Andric// 80b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 90b57cec5SDimitry Andric 100b57cec5SDimitry Andric#ifndef _LIBCPP_CSTDIO 110b57cec5SDimitry Andric#define _LIBCPP_CSTDIO 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric/* 140b57cec5SDimitry Andric cstdio synopsis 150b57cec5SDimitry Andric 160b57cec5SDimitry AndricMacros: 170b57cec5SDimitry Andric 180b57cec5SDimitry Andric BUFSIZ 190b57cec5SDimitry Andric EOF 200b57cec5SDimitry Andric FILENAME_MAX 210b57cec5SDimitry Andric FOPEN_MAX 220b57cec5SDimitry Andric L_tmpnam 230b57cec5SDimitry Andric NULL 240b57cec5SDimitry Andric SEEK_CUR 250b57cec5SDimitry Andric SEEK_END 260b57cec5SDimitry Andric SEEK_SET 270b57cec5SDimitry Andric TMP_MAX 280b57cec5SDimitry Andric _IOFBF 290b57cec5SDimitry Andric _IOLBF 300b57cec5SDimitry Andric _IONBF 310b57cec5SDimitry Andric stderr 320b57cec5SDimitry Andric stdin 330b57cec5SDimitry Andric stdout 340b57cec5SDimitry Andric 350b57cec5SDimitry Andricnamespace std 360b57cec5SDimitry Andric{ 370b57cec5SDimitry Andric 380b57cec5SDimitry AndricTypes: 390b57cec5SDimitry Andric 400b57cec5SDimitry AndricFILE 410b57cec5SDimitry Andricfpos_t 420b57cec5SDimitry Andricsize_t 430b57cec5SDimitry Andric 440b57cec5SDimitry Andricint remove(const char* filename); 450b57cec5SDimitry Andricint rename(const char* old, const char* new); 460b57cec5SDimitry AndricFILE* tmpfile(void); 470b57cec5SDimitry Andricchar* tmpnam(char* s); 480b57cec5SDimitry Andricint fclose(FILE* stream); 490b57cec5SDimitry Andricint fflush(FILE* stream); 500b57cec5SDimitry AndricFILE* fopen(const char* restrict filename, const char* restrict mode); 510b57cec5SDimitry AndricFILE* freopen(const char* restrict filename, const char * restrict mode, 520b57cec5SDimitry Andric FILE * restrict stream); 530b57cec5SDimitry Andricvoid setbuf(FILE* restrict stream, char* restrict buf); 540b57cec5SDimitry Andricint setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size); 550b57cec5SDimitry Andricint fprintf(FILE* restrict stream, const char* restrict format, ...); 560b57cec5SDimitry Andricint fscanf(FILE* restrict stream, const char * restrict format, ...); 570b57cec5SDimitry Andricint printf(const char* restrict format, ...); 580b57cec5SDimitry Andricint scanf(const char* restrict format, ...); 590b57cec5SDimitry Andricint snprintf(char* restrict s, size_t n, const char* restrict format, ...); // C99 600b57cec5SDimitry Andricint sprintf(char* restrict s, const char* restrict format, ...); 610b57cec5SDimitry Andricint sscanf(const char* restrict s, const char* restrict format, ...); 620b57cec5SDimitry Andricint vfprintf(FILE* restrict stream, const char* restrict format, va_list arg); 630b57cec5SDimitry Andricint vfscanf(FILE* restrict stream, const char* restrict format, va_list arg); // C99 640b57cec5SDimitry Andricint vprintf(const char* restrict format, va_list arg); 650b57cec5SDimitry Andricint vscanf(const char* restrict format, va_list arg); // C99 660b57cec5SDimitry Andricint vsnprintf(char* restrict s, size_t n, const char* restrict format, // C99 670b57cec5SDimitry Andric va_list arg); 680b57cec5SDimitry Andricint vsprintf(char* restrict s, const char* restrict format, va_list arg); 690b57cec5SDimitry Andricint vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99 700b57cec5SDimitry Andricint fgetc(FILE* stream); 710b57cec5SDimitry Andricchar* fgets(char* restrict s, int n, FILE* restrict stream); 720b57cec5SDimitry Andricint fputc(int c, FILE* stream); 730b57cec5SDimitry Andricint fputs(const char* restrict s, FILE* restrict stream); 740b57cec5SDimitry Andricint getc(FILE* stream); 750b57cec5SDimitry Andricint getchar(void); 760b57cec5SDimitry Andricchar* gets(char* s); // removed in C++14 770b57cec5SDimitry Andricint putc(int c, FILE* stream); 780b57cec5SDimitry Andricint putchar(int c); 790b57cec5SDimitry Andricint puts(const char* s); 800b57cec5SDimitry Andricint ungetc(int c, FILE* stream); 810b57cec5SDimitry Andricsize_t fread(void* restrict ptr, size_t size, size_t nmemb, 820b57cec5SDimitry Andric FILE* restrict stream); 830b57cec5SDimitry Andricsize_t fwrite(const void* restrict ptr, size_t size, size_t nmemb, 840b57cec5SDimitry Andric FILE* restrict stream); 850b57cec5SDimitry Andricint fgetpos(FILE* restrict stream, fpos_t* restrict pos); 860b57cec5SDimitry Andricint fseek(FILE* stream, long offset, int whence); 870b57cec5SDimitry Andricint fsetpos(FILE*stream, const fpos_t* pos); 880b57cec5SDimitry Andriclong ftell(FILE* stream); 890b57cec5SDimitry Andricvoid rewind(FILE* stream); 900b57cec5SDimitry Andricvoid clearerr(FILE* stream); 910b57cec5SDimitry Andricint feof(FILE* stream); 920b57cec5SDimitry Andricint ferror(FILE* stream); 930b57cec5SDimitry Andricvoid perror(const char* s); 940b57cec5SDimitry Andric 950b57cec5SDimitry Andric} // std 960b57cec5SDimitry Andric*/ 970b57cec5SDimitry Andric 980b57cec5SDimitry Andric#include <__config> 99bdd1243dSDimitry Andric 1000b57cec5SDimitry Andric#include <stdio.h> 1010b57cec5SDimitry Andric 102bdd1243dSDimitry Andric#ifndef _LIBCPP_STDIO_H 103bdd1243dSDimitry Andric# error <cstdio> tried including <stdio.h> but didn't find libc++'s <stdio.h> header. \ 104bdd1243dSDimitry Andric This usually means that your header search paths are not configured properly. \ 105bdd1243dSDimitry Andric The header search paths should contain the C++ Standard Library headers before \ 106bdd1243dSDimitry Andric any C Standard Library, and you are probably using compiler flags that make that \ 107bdd1243dSDimitry Andric not be the case. 108bdd1243dSDimitry Andric#endif 109bdd1243dSDimitry Andric 1100b57cec5SDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 1110b57cec5SDimitry Andric# pragma GCC system_header 1120b57cec5SDimitry Andric#endif 1130b57cec5SDimitry Andric 1140b57cec5SDimitry Andric_LIBCPP_BEGIN_NAMESPACE_STD 1150b57cec5SDimitry Andric 116fe6060f1SDimitry Andricusing ::FILE _LIBCPP_USING_IF_EXISTS; 117fe6060f1SDimitry Andricusing ::fpos_t _LIBCPP_USING_IF_EXISTS; 118fe6060f1SDimitry Andricusing ::size_t _LIBCPP_USING_IF_EXISTS; 1190b57cec5SDimitry Andric 120fe6060f1SDimitry Andricusing ::fclose _LIBCPP_USING_IF_EXISTS; 121fe6060f1SDimitry Andricusing ::fflush _LIBCPP_USING_IF_EXISTS; 122fe6060f1SDimitry Andricusing ::setbuf _LIBCPP_USING_IF_EXISTS; 123fe6060f1SDimitry Andricusing ::setvbuf _LIBCPP_USING_IF_EXISTS; 124fe6060f1SDimitry Andricusing ::fprintf _LIBCPP_USING_IF_EXISTS; 125fe6060f1SDimitry Andricusing ::fscanf _LIBCPP_USING_IF_EXISTS; 126fe6060f1SDimitry Andricusing ::snprintf _LIBCPP_USING_IF_EXISTS; 127fe6060f1SDimitry Andricusing ::sprintf _LIBCPP_USING_IF_EXISTS; 128fe6060f1SDimitry Andricusing ::sscanf _LIBCPP_USING_IF_EXISTS; 129fe6060f1SDimitry Andricusing ::vfprintf _LIBCPP_USING_IF_EXISTS; 130fe6060f1SDimitry Andricusing ::vfscanf _LIBCPP_USING_IF_EXISTS; 131fe6060f1SDimitry Andricusing ::vsscanf _LIBCPP_USING_IF_EXISTS; 132fe6060f1SDimitry Andricusing ::vsnprintf _LIBCPP_USING_IF_EXISTS; 133fe6060f1SDimitry Andricusing ::vsprintf _LIBCPP_USING_IF_EXISTS; 134fe6060f1SDimitry Andricusing ::fgetc _LIBCPP_USING_IF_EXISTS; 135fe6060f1SDimitry Andricusing ::fgets _LIBCPP_USING_IF_EXISTS; 136fe6060f1SDimitry Andricusing ::fputc _LIBCPP_USING_IF_EXISTS; 137fe6060f1SDimitry Andricusing ::fputs _LIBCPP_USING_IF_EXISTS; 138fe6060f1SDimitry Andricusing ::getc _LIBCPP_USING_IF_EXISTS; 139fe6060f1SDimitry Andricusing ::putc _LIBCPP_USING_IF_EXISTS; 140fe6060f1SDimitry Andricusing ::ungetc _LIBCPP_USING_IF_EXISTS; 141fe6060f1SDimitry Andricusing ::fread _LIBCPP_USING_IF_EXISTS; 142fe6060f1SDimitry Andricusing ::fwrite _LIBCPP_USING_IF_EXISTS; 143fe6060f1SDimitry Andricusing ::fgetpos _LIBCPP_USING_IF_EXISTS; 144fe6060f1SDimitry Andricusing ::fseek _LIBCPP_USING_IF_EXISTS; 145fe6060f1SDimitry Andricusing ::fsetpos _LIBCPP_USING_IF_EXISTS; 146fe6060f1SDimitry Andricusing ::ftell _LIBCPP_USING_IF_EXISTS; 147fe6060f1SDimitry Andricusing ::rewind _LIBCPP_USING_IF_EXISTS; 148fe6060f1SDimitry Andricusing ::clearerr _LIBCPP_USING_IF_EXISTS; 149fe6060f1SDimitry Andricusing ::feof _LIBCPP_USING_IF_EXISTS; 150fe6060f1SDimitry Andricusing ::ferror _LIBCPP_USING_IF_EXISTS; 151fe6060f1SDimitry Andricusing ::perror _LIBCPP_USING_IF_EXISTS; 1520b57cec5SDimitry Andric 153fe6060f1SDimitry Andricusing ::fopen _LIBCPP_USING_IF_EXISTS; 154fe6060f1SDimitry Andricusing ::freopen _LIBCPP_USING_IF_EXISTS; 155fe6060f1SDimitry Andricusing ::remove _LIBCPP_USING_IF_EXISTS; 156fe6060f1SDimitry Andricusing ::rename _LIBCPP_USING_IF_EXISTS; 157fe6060f1SDimitry Andricusing ::tmpfile _LIBCPP_USING_IF_EXISTS; 158fe6060f1SDimitry Andricusing ::tmpnam _LIBCPP_USING_IF_EXISTS; 1590b57cec5SDimitry Andric 160fe6060f1SDimitry Andricusing ::getchar _LIBCPP_USING_IF_EXISTS; 161*46c59ea9SDimitry Andric#if _LIBCPP_STD_VER <= 11 && !(defined(__FreeBSD__) && __FreeBSD__ >= 13) // FreeBSD customization 162fe6060f1SDimitry Andricusing ::gets _LIBCPP_USING_IF_EXISTS; 1630b57cec5SDimitry Andric#endif 164fe6060f1SDimitry Andricusing ::scanf _LIBCPP_USING_IF_EXISTS; 165fe6060f1SDimitry Andricusing ::vscanf _LIBCPP_USING_IF_EXISTS; 1660b57cec5SDimitry Andric 167fe6060f1SDimitry Andricusing ::printf _LIBCPP_USING_IF_EXISTS; 168fe6060f1SDimitry Andricusing ::putchar _LIBCPP_USING_IF_EXISTS; 169fe6060f1SDimitry Andricusing ::puts _LIBCPP_USING_IF_EXISTS; 170fe6060f1SDimitry Andricusing ::vprintf _LIBCPP_USING_IF_EXISTS; 1710b57cec5SDimitry Andric 1720b57cec5SDimitry Andric_LIBCPP_END_NAMESPACE_STD 1730b57cec5SDimitry Andric 1740b57cec5SDimitry Andric#endif // _LIBCPP_CSTDIO 175