stdio.h 7.09 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
#ifndef RC_INVOKED
15
#include <stdarg.h>
16
#endif
17

18 19 20 21
#if !defined(_MSC_VER) && !defined(__int64)
#define __int64 long long
#endif

22 23 24 25
#if defined(__x86_64__) && !defined(_WIN64)
#define _WIN64
#endif

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

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

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

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

81
#ifndef _FPOS_T_DEFINED
82
typedef __int64 fpos_t;
83
#define _FPOS_T_DEFINED
84
#endif
85

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

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

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

#ifdef __cplusplus
extern "C" {
#endif

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

117 118 119 120
#define stdin              (_iob+STDIN_FILENO)
#define stdout             (_iob+STDOUT_FILENO)
#define stderr             (_iob+STDERR_FILENO)

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

#ifdef __cplusplus
}
#endif


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

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

#endif /* __WINE_STDIO_H */