blob: 56fb2d83bb287c6dc985d3c6fceada64a7ebdf85 [file] [log] [blame]
Richard Smithff7ba4d2015-10-09 01:29:09 +00001// -*- C++ -*-
2//===---------------------------- stdio.h ---------------------------------===//
3//
4// The LLVM Compiler Infrastructure
5//
6// This file is dual licensed under the MIT and the University of Illinois Open
7// Source Licenses. See LICENSE.TXT for details.
8//
9//===----------------------------------------------------------------------===//
10
11#if defined(__need_FILE) || defined(__need___FILE)
12
13#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
14#pragma GCC system_header
15#endif
16
17#include_next <stdio.h>
18
19#elif !defined(_LIBCPP_STDIO_H)
20#define _LIBCPP_STDIO_H
21
22/*
23 stdio.h synopsis
24
25Macros:
26
27 BUFSIZ
28 EOF
29 FILENAME_MAX
30 FOPEN_MAX
31 L_tmpnam
32 NULL
33 SEEK_CUR
34 SEEK_END
35 SEEK_SET
36 TMP_MAX
37 _IOFBF
38 _IOLBF
39 _IONBF
40 stderr
41 stdin
42 stdout
43
44Types:
45
46FILE
47fpos_t
48size_t
49
50int remove(const char* filename);
51int rename(const char* old, const char* new);
52FILE* tmpfile(void);
53char* tmpnam(char* s);
54int fclose(FILE* stream);
55int fflush(FILE* stream);
56FILE* fopen(const char* restrict filename, const char* restrict mode);
57FILE* freopen(const char* restrict filename, const char * restrict mode,
58 FILE * restrict stream);
59void setbuf(FILE* restrict stream, char* restrict buf);
60int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size);
61int fprintf(FILE* restrict stream, const char* restrict format, ...);
62int fscanf(FILE* restrict stream, const char * restrict format, ...);
63int printf(const char* restrict format, ...);
64int scanf(const char* restrict format, ...);
65int snprintf(char* restrict s, size_t n, const char* restrict format, ...); // C99
66int sprintf(char* restrict s, const char* restrict format, ...);
67int sscanf(const char* restrict s, const char* restrict format, ...);
68int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg);
69int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg); // C99
70int vprintf(const char* restrict format, va_list arg);
71int vscanf(const char* restrict format, va_list arg); // C99
72int vsnprintf(char* restrict s, size_t n, const char* restrict format, // C99
73 va_list arg);
74int vsprintf(char* restrict s, const char* restrict format, va_list arg);
75int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99
76int fgetc(FILE* stream);
77char* fgets(char* restrict s, int n, FILE* restrict stream);
78int fputc(int c, FILE* stream);
79int fputs(const char* restrict s, FILE* restrict stream);
80int getc(FILE* stream);
81int getchar(void);
82char* gets(char* s); // removed in C++14
83int putc(int c, FILE* stream);
84int putchar(int c);
85int puts(const char* s);
86int ungetc(int c, FILE* stream);
87size_t fread(void* restrict ptr, size_t size, size_t nmemb,
88 FILE* restrict stream);
89size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb,
90 FILE* restrict stream);
91int fgetpos(FILE* restrict stream, fpos_t* restrict pos);
92int fseek(FILE* stream, long offset, int whence);
93int fsetpos(FILE*stream, const fpos_t* pos);
94long ftell(FILE* stream);
95void rewind(FILE* stream);
96void clearerr(FILE* stream);
97int feof(FILE* stream);
98int ferror(FILE* stream);
99void perror(const char* s);
100*/
101
102#include <__config>
103
104#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
105#pragma GCC system_header
106#endif
107
108#include_next <stdio.h>
109
110#ifdef __cplusplus
111
112// snprintf
113#if defined(_LIBCPP_MSVCRT)
114extern "C++" {
115#include "support/win32/support.h"
116}
117#endif
118
119#undef getc
120#undef putc
121#undef clearerr
122#undef feof
123#undef ferror
124
125#endif
126
127#endif // _LIBCPP_STDIO_H