xref: /freebsd/contrib/llvm-project/libcxx/include/cstdio (revision fe6060f10f634930ff71b7c50291ddc610da2475)
10b57cec5SDimitry Andric// -*- C++ -*-
20b57cec5SDimitry Andric//===---------------------------- cstdio ----------------------------------===//
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>
990b57cec5SDimitry Andric#include <stdio.h>
1000b57cec5SDimitry Andric
1010b57cec5SDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1020b57cec5SDimitry Andric#pragma GCC system_header
1030b57cec5SDimitry Andric#endif
1040b57cec5SDimitry Andric
1050b57cec5SDimitry Andric_LIBCPP_BEGIN_NAMESPACE_STD
1060b57cec5SDimitry Andric
107*fe6060f1SDimitry Andricusing ::FILE _LIBCPP_USING_IF_EXISTS;
108*fe6060f1SDimitry Andricusing ::fpos_t _LIBCPP_USING_IF_EXISTS;
109*fe6060f1SDimitry Andricusing ::size_t _LIBCPP_USING_IF_EXISTS;
1100b57cec5SDimitry Andric
111*fe6060f1SDimitry Andricusing ::fclose _LIBCPP_USING_IF_EXISTS;
112*fe6060f1SDimitry Andricusing ::fflush _LIBCPP_USING_IF_EXISTS;
113*fe6060f1SDimitry Andricusing ::setbuf _LIBCPP_USING_IF_EXISTS;
114*fe6060f1SDimitry Andricusing ::setvbuf _LIBCPP_USING_IF_EXISTS;
115*fe6060f1SDimitry Andricusing ::fprintf _LIBCPP_USING_IF_EXISTS;
116*fe6060f1SDimitry Andricusing ::fscanf _LIBCPP_USING_IF_EXISTS;
117*fe6060f1SDimitry Andricusing ::snprintf _LIBCPP_USING_IF_EXISTS;
118*fe6060f1SDimitry Andricusing ::sprintf _LIBCPP_USING_IF_EXISTS;
119*fe6060f1SDimitry Andricusing ::sscanf _LIBCPP_USING_IF_EXISTS;
120*fe6060f1SDimitry Andricusing ::vfprintf _LIBCPP_USING_IF_EXISTS;
121*fe6060f1SDimitry Andricusing ::vfscanf _LIBCPP_USING_IF_EXISTS;
122*fe6060f1SDimitry Andricusing ::vsscanf _LIBCPP_USING_IF_EXISTS;
123*fe6060f1SDimitry Andricusing ::vsnprintf _LIBCPP_USING_IF_EXISTS;
124*fe6060f1SDimitry Andricusing ::vsprintf _LIBCPP_USING_IF_EXISTS;
125*fe6060f1SDimitry Andricusing ::fgetc _LIBCPP_USING_IF_EXISTS;
126*fe6060f1SDimitry Andricusing ::fgets _LIBCPP_USING_IF_EXISTS;
127*fe6060f1SDimitry Andricusing ::fputc _LIBCPP_USING_IF_EXISTS;
128*fe6060f1SDimitry Andricusing ::fputs _LIBCPP_USING_IF_EXISTS;
129*fe6060f1SDimitry Andricusing ::getc _LIBCPP_USING_IF_EXISTS;
130*fe6060f1SDimitry Andricusing ::putc _LIBCPP_USING_IF_EXISTS;
131*fe6060f1SDimitry Andricusing ::ungetc _LIBCPP_USING_IF_EXISTS;
132*fe6060f1SDimitry Andricusing ::fread _LIBCPP_USING_IF_EXISTS;
133*fe6060f1SDimitry Andricusing ::fwrite _LIBCPP_USING_IF_EXISTS;
1345ffd83dbSDimitry Andric#ifndef _LIBCPP_HAS_NO_FGETPOS_FSETPOS
135*fe6060f1SDimitry Andricusing ::fgetpos _LIBCPP_USING_IF_EXISTS;
1365ffd83dbSDimitry Andric#endif
137*fe6060f1SDimitry Andricusing ::fseek _LIBCPP_USING_IF_EXISTS;
1385ffd83dbSDimitry Andric#ifndef _LIBCPP_HAS_NO_FGETPOS_FSETPOS
139*fe6060f1SDimitry Andricusing ::fsetpos _LIBCPP_USING_IF_EXISTS;
1405ffd83dbSDimitry Andric#endif
141*fe6060f1SDimitry Andricusing ::ftell _LIBCPP_USING_IF_EXISTS;
142*fe6060f1SDimitry Andricusing ::rewind _LIBCPP_USING_IF_EXISTS;
143*fe6060f1SDimitry Andricusing ::clearerr _LIBCPP_USING_IF_EXISTS;
144*fe6060f1SDimitry Andricusing ::feof _LIBCPP_USING_IF_EXISTS;
145*fe6060f1SDimitry Andricusing ::ferror _LIBCPP_USING_IF_EXISTS;
146*fe6060f1SDimitry Andricusing ::perror _LIBCPP_USING_IF_EXISTS;
1470b57cec5SDimitry Andric
1480b57cec5SDimitry Andric#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE
149*fe6060f1SDimitry Andricusing ::fopen _LIBCPP_USING_IF_EXISTS;
150*fe6060f1SDimitry Andricusing ::freopen _LIBCPP_USING_IF_EXISTS;
151*fe6060f1SDimitry Andricusing ::remove _LIBCPP_USING_IF_EXISTS;
152*fe6060f1SDimitry Andricusing ::rename _LIBCPP_USING_IF_EXISTS;
153*fe6060f1SDimitry Andricusing ::tmpfile _LIBCPP_USING_IF_EXISTS;
154*fe6060f1SDimitry Andricusing ::tmpnam _LIBCPP_USING_IF_EXISTS;
1550b57cec5SDimitry Andric#endif
1560b57cec5SDimitry Andric
1570b57cec5SDimitry Andric#ifndef _LIBCPP_HAS_NO_STDIN
158*fe6060f1SDimitry Andricusing ::getchar _LIBCPP_USING_IF_EXISTS;
1590b57cec5SDimitry Andric#if _LIBCPP_STD_VER <= 11 && !defined(_LIBCPP_C_HAS_NO_GETS)
160*fe6060f1SDimitry Andricusing ::gets _LIBCPP_USING_IF_EXISTS;
1610b57cec5SDimitry Andric#endif
162*fe6060f1SDimitry Andricusing ::scanf _LIBCPP_USING_IF_EXISTS;
163*fe6060f1SDimitry Andricusing ::vscanf _LIBCPP_USING_IF_EXISTS;
1640b57cec5SDimitry Andric#endif
1650b57cec5SDimitry Andric
1660b57cec5SDimitry Andric#ifndef _LIBCPP_HAS_NO_STDOUT
167*fe6060f1SDimitry Andricusing ::printf _LIBCPP_USING_IF_EXISTS;
168*fe6060f1SDimitry Andricusing ::putchar _LIBCPP_USING_IF_EXISTS;
169*fe6060f1SDimitry Andricusing ::puts _LIBCPP_USING_IF_EXISTS;
170*fe6060f1SDimitry Andricusing ::vprintf _LIBCPP_USING_IF_EXISTS;
1710b57cec5SDimitry Andric#endif
1720b57cec5SDimitry Andric
1730b57cec5SDimitry Andric_LIBCPP_END_NAMESPACE_STD
1740b57cec5SDimitry Andric
1750b57cec5SDimitry Andric#endif // _LIBCPP_CSTDIO
176