stdio.h 7.19 KB
Newer Older
1 2 3 4 5 6 7 8 9
/*
 * Standard I/O definitions.
 *
 * Derived from the mingw header written by Colin Peters.
 * Modified for Wine use by Jon Griffiths and Francois Gouget.
 * This file is in the public domain.
 */
#ifndef __WINE_STDIO_H
#define __WINE_STDIO_H
10
#ifndef __WINE_USE_MSVCRT
11
#define __WINE_USE_MSVCRT
12
#endif
13

14 15
#include <pshpack8.h>

16
#ifndef RC_INVOKED
17
#include <stdarg.h>
18
#endif
19

20 21 22 23
#if defined(__x86_64__) && !defined(_WIN64)
#define _WIN64
#endif

24 25 26 27 28 29 30 31
#if !defined(_MSC_VER) && !defined(__int64)
# ifdef _WIN64
#   define __int64 long
# else
#   define __int64 long long
# endif
#endif

32
/* file._flag flags */
33 34 35 36 37 38 39
#define _IOREAD          0x0001
#define _IOWRT           0x0002
#define _IOMYBUF         0x0008
#define _IOEOF           0x0010
#define _IOERR           0x0020
#define _IOSTRG          0x0040
#define _IORW            0x0080
40

41 42 43 44 45 46 47
#ifndef NULL
#ifdef  __cplusplus
#define NULL  0
#else
#define NULL  ((void *)0)
#endif
#endif
48 49 50 51 52 53 54 55 56 57 58 59

#define STDIN_FILENO  0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2

/* more file._flag flags, but these conflict with Unix */
#define _IOFBF    0x0000
#define _IONBF    0x0004
#define _IOLBF    0x0040

#define EOF       (-1)
#define FILENAME_MAX 260
60
#define TMP_MAX   0x7fff
61 62 63 64 65 66 67 68 69 70 71
#define FOPEN_MAX 20
#define L_tmpnam  260

#define BUFSIZ    512

#ifndef SEEK_SET
#define SEEK_SET  0
#define SEEK_CUR  1
#define SEEK_END  2
#endif

72 73 74
#ifndef _FILE_DEFINED
#define _FILE_DEFINED
typedef struct _iobuf
75 76 77 78 79 80 81 82 83
{
  char* _ptr;
  int   _cnt;
  char* _base;
  int   _flag;
  int   _file;
  int   _charbuf;
  int   _bufsiz;
  char* _tmpfname;
84 85
} FILE;
#endif  /* _FILE_DEFINED */
86

87
#ifndef _FPOS_T_DEFINED
88
typedef __int64 fpos_t;
89
#define _FPOS_T_DEFINED
90
#endif
91

92
#ifndef _SIZE_T_DEFINED
93 94 95
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else
96
typedef unsigned int size_t;
97
#endif
98
#define _SIZE_T_DEFINED
99 100
#endif

101 102
#ifndef _WCHAR_T_DEFINED
#define _WCHAR_T_DEFINED
103
#ifndef __cplusplus
104
typedef unsigned short wchar_t;
105 106 107
#endif
#endif

108
#ifndef _WCTYPE_T_DEFINED
109 110
typedef unsigned short  wint_t;
typedef unsigned short  wctype_t;
111
#define _WCTYPE_T_DEFINED
112
#endif
113 114 115 116 117

#ifdef __cplusplus
extern "C" {
#endif

118 119
#ifndef _STDIO_DEFINED
FILE*        __p__iob(void);
120
#define _iob               (__p__iob())
121
#endif /* _STDIO_DEFINED */
122

123 124 125 126
#define stdin              (_iob+STDIN_FILENO)
#define stdout             (_iob+STDOUT_FILENO)
#define stderr             (_iob+STDERR_FILENO)

127 128 129 130
#ifndef _STDIO_DEFINED
#define _STDIO_DEFINED
int         _fcloseall(void);
FILE* _fdopen(int,const char*);
131
int         _fgetchar(void);
132 133 134
int         _filbuf(FILE*);
int         _fileno(FILE*);
int         _flsbuf(int,FILE*);
135 136
int         _flushall(void);
int         _fputchar(int);
137
FILE* _fsopen(const char*,const char*,int);
138
int         _getmaxstdio(void);
139 140 141 142
int         _getw(FILE*);
int         _pclose(FILE*);
FILE* _popen(const char*,const char*);
int         _putw(int,FILE*);
143 144
int         _rmtmp(void);
int         _setmaxstdio(int);
145
int         _snprintf(char*,size_t,const char*,...);
146 147
char*       _tempnam(const char*,const char*);
int         _unlink(const char*);
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
int         _vsnprintf(char*,size_t,const char*,va_list);

void        clearerr(FILE*);
int         fclose(FILE*);
int         feof(FILE*);
int         ferror(FILE*);
int         fflush(FILE*);
int         fgetc(FILE*);
int         fgetpos(FILE*,fpos_t*);
char*       fgets(char*,int,FILE*);
FILE* fopen(const char*,const char*);
int         fprintf(FILE*,const char*,...);
int         fputc(int,FILE*);
int         fputs(const char*,FILE*);
size_t fread(void*,size_t,size_t,FILE*);
FILE* freopen(const char*,const char*,FILE*);
int         fscanf(FILE*,const char*,...);
int         fseek(FILE*,long,int);
int         fsetpos(FILE*,fpos_t*);
long        ftell(FILE*);
size_t fwrite(const void*,size_t,size_t,FILE*);
int         getc(FILE*);
int         getchar(void);
char*       gets(char*);
void        perror(const char*);
int         printf(const char*,...);
int         putc(int,FILE*);
int         putchar(int);
int         puts(const char*);
int         remove(const char*);
int         rename(const char*,const char*);
void        rewind(FILE*);
int         scanf(const char*,...);
void        setbuf(FILE*,char*);
int         setvbuf(FILE*,char*,int,size_t);
int         sprintf(char*,const char*,...);
int         sscanf(const char*,const char*,...);
FILE* tmpfile(void);
char*       tmpnam(char*);
int         ungetc(int,FILE*);
int         vfprintf(FILE*,const char*,va_list);
int         vprintf(const char*,va_list);
int         vsprintf(char*,const char*,va_list);

#ifndef _WSTDIO_DEFINED
#define _WSTDIO_DEFINED
wint_t  _fgetwchar(void);
wint_t  _fputwchar(wint_t);
wchar_t*_getws(wchar_t*);
int             _putws(const wchar_t*);
int             _snwprintf(wchar_t*,size_t,const wchar_t*,...);
int             _vsnwprintf(wchar_t*,size_t,const wchar_t*,va_list);
FILE*   _wfdopen(int,const wchar_t*);
FILE*   _wfopen(const wchar_t*,const wchar_t*);
FILE*   _wfreopen(const wchar_t*,const wchar_t*,FILE*);
FILE*   _wfsopen(const wchar_t*,const wchar_t*,int);
void            _wperror(const wchar_t*);
FILE*   _wpopen(const wchar_t*,const wchar_t*);
int             _wremove(const wchar_t*);
wchar_t*_wtempnam(const wchar_t*,const wchar_t*);
wchar_t*_wtmpnam(wchar_t*);

wint_t  fgetwc(FILE*);
wchar_t*fgetws(wchar_t*,int,FILE*);
wint_t  fputwc(wint_t,FILE*);
int             fputws(const wchar_t*,FILE*);
int             fwprintf(FILE*,const wchar_t*,...);
int             fputws(const wchar_t*,FILE*);
int             fwscanf(FILE*,const wchar_t*,...);
wint_t  getwc(FILE*);
wint_t  getwchar(void);
wchar_t*getws(wchar_t*);
wint_t  putwc(wint_t,FILE*);
wint_t  putwchar(wint_t);
int             putws(const wchar_t*);
int             swprintf(wchar_t*,const wchar_t*,...);
int             swscanf(const wchar_t*,const wchar_t*,...);
wint_t  ungetwc(wint_t,FILE*);
int             vfwprintf(FILE*,const wchar_t*,va_list);
int             vswprintf(wchar_t*,const wchar_t*,va_list);
int             vwprintf(const wchar_t*,va_list);
int             wprintf(const wchar_t*,...);
int             wscanf(const wchar_t*,...);
#endif /* _WSTDIO_DEFINED */

#endif /* _STDIO_DEFINED */
234 235 236 237 238 239

#ifdef __cplusplus
}
#endif


240
static inline FILE* fdopen(int fd, const char *mode) { return _fdopen(fd, mode); }
241
static inline int fgetchar(void) { return _fgetchar(); }
242
static inline int fileno(FILE* file) { return _fileno(file); }
243
static inline int fputchar(int c) { return _fputchar(c); }
244 245
static inline int pclose(FILE* file) { return _pclose(file); }
static inline FILE* popen(const char* command, const char* mode) { return _popen(command, mode); }
246
static inline char* tempnam(const char *dir, const char *prefix) { return _tempnam(dir, prefix); }
247
#ifndef _UNLINK_DEFINED
248
static inline int unlink(const char* path) { return _unlink(path); }
249
#define _UNLINK_DEFINED
250
#endif
251
static inline int vsnprintf(char *buffer, size_t size, const char *format, va_list args) { return _vsnprintf(buffer,size,format,args); }
252

253 254 255 256 257
static inline wint_t fgetwchar(void) { return _fgetwchar(); }
static inline wint_t fputwchar(wint_t wc) { return _fputwchar(wc); }
static inline int getw(FILE* file) { return _getw(file); }
static inline int putw(int val, FILE* file) { return _putw(val, file); }
static inline FILE* wpopen(const wchar_t* command,const wchar_t* mode) { return _wpopen(command, mode); }
258

259 260
#include <poppack.h>

261
#endif /* __WINE_STDIO_H */