stdio.h 7.13 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(_MSC_VER) && !defined(__int64)
#define __int64 long long
#endif

24 25 26 27
#if defined(__x86_64__) && !defined(_WIN64)
#define _WIN64
#endif

28
/* file._flag flags */
29 30 31 32 33 34 35
#define _IOREAD          0x0001
#define _IOWRT           0x0002
#define _IOMYBUF         0x0008
#define _IOEOF           0x0010
#define _IOERR           0x0020
#define _IOSTRG          0x0040
#define _IORW            0x0080
36

37 38 39 40 41 42 43
#ifndef NULL
#ifdef  __cplusplus
#define NULL  0
#else
#define NULL  ((void *)0)
#endif
#endif
44 45 46 47 48 49 50 51 52 53 54 55

#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
56
#define TMP_MAX   0x7fff
57 58 59 60 61 62 63 64 65 66 67
#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

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

83
#ifndef _FPOS_T_DEFINED
84
typedef __int64 fpos_t;
85
#define _FPOS_T_DEFINED
86
#endif
87

88
#ifndef _SIZE_T_DEFINED
89 90 91
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else
92
typedef unsigned int size_t;
93
#endif
94
#define _SIZE_T_DEFINED
95 96
#endif

97 98
#ifndef _WCHAR_T_DEFINED
#define _WCHAR_T_DEFINED
99
#ifndef __cplusplus
100
typedef unsigned short wchar_t;
101 102 103
#endif
#endif

104
#ifndef _WCTYPE_T_DEFINED
105 106
typedef unsigned short  wint_t;
typedef unsigned short  wctype_t;
107
#define _WCTYPE_T_DEFINED
108
#endif
109 110 111 112 113

#ifdef __cplusplus
extern "C" {
#endif

114 115
#ifndef _STDIO_DEFINED
FILE*        __p__iob(void);
116
#define _iob               (__p__iob())
117
#endif /* _STDIO_DEFINED */
118

119 120 121 122
#define stdin              (_iob+STDIN_FILENO)
#define stdout             (_iob+STDOUT_FILENO)
#define stderr             (_iob+STDERR_FILENO)

123 124 125 126
#ifndef _STDIO_DEFINED
#define _STDIO_DEFINED
int         _fcloseall(void);
FILE* _fdopen(int,const char*);
127
int         _fgetchar(void);
128 129 130
int         _filbuf(FILE*);
int         _fileno(FILE*);
int         _flsbuf(int,FILE*);
131 132
int         _flushall(void);
int         _fputchar(int);
133
FILE* _fsopen(const char*,const char*,int);
134
int         _getmaxstdio(void);
135 136 137 138
int         _getw(FILE*);
int         _pclose(FILE*);
FILE* _popen(const char*,const char*);
int         _putw(int,FILE*);
139 140
int         _rmtmp(void);
int         _setmaxstdio(int);
141
int         _snprintf(char*,size_t,const char*,...);
142 143
char*       _tempnam(const char*,const char*);
int         _unlink(const char*);
144 145 146 147 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
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 */
230 231 232 233 234 235

#ifdef __cplusplus
}
#endif


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

249 250 251 252 253
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); }
254

255 256
#include <poppack.h>

257
#endif /* __WINE_STDIO_H */