phobos/std/c/stdio.d
2007-09-10 03:06:06 +00:00

266 lines
5.6 KiB
D

module std.c.stdio;
extern (C):
version (Win32)
{
const int _NFILE = 60;
const int BUFSIZ = 0x4000;
const int EOF = -1;
const int FOPEN_MAX = 20;
const int FILENAME_MAX = 256; // 255 plus NULL
const int TMP_MAX = 32767;
const int _SYS_OPEN = 20;
const int SYS_OPEN = _SYS_OPEN;
const wchar WEOF = 0xFFFF;
}
version (linux)
{
const int EOF = -1;
const int FOPEN_MAX = 16;
const int FILENAME_MAX = 4095;
const int TMP_MAX = 238328;
const int L_tmpnam = 20;
}
enum { SEEK_SET, SEEK_CUR, SEEK_END }
alias uint size_t;
struct _iobuf
{
align (1):
version (Win32)
{
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
int __tmpnum;
}
version (linux)
{
char* _read_ptr;
char* _read_end;
char* _read_base;
char* _write_base;
char* _write_ptr;
char* _write_end;
char* _buf_base;
char* _buf_end;
char* _save_base;
char* _backup_base;
char* _save_end;
void* _markers;
_iobuf* _chain;
int _fileno;
int _blksize;
int _old_offset;
ushort _cur_column;
byte _vtable_offset;
char[1] _shortbuf;
void* _lock;
}
}
alias _iobuf FILE;
enum
{
_F_RDWR = 0x0003,
_F_READ = 0x0001,
_F_WRIT = 0x0002,
_F_BUF = 0x0004,
_F_LBUF = 0x0008,
_F_ERR = 0x0010,
_F_EOF = 0x0020,
_F_BIN = 0x0040,
_F_IN = 0x0080,
_F_OUT = 0x0100,
_F_TERM = 0x0200,
}
version (Win32)
{
FILE _iob[_NFILE]; // BUG: should be extern
}
version (Win32)
{
enum
{
_IOREAD = 1,
_IOWRT = 2,
_IONBF = 4,
_IOMYBUF = 8,
_IOEOF = 0x10,
_IOERR = 0x20,
_IOLBF = 0x40,
_IOSTRG = 0x40,
_IORW = 0x80,
_IOFBF = 0,
_IOAPP = 0x200,
_IOTRAN = 0x100,
}
}
version (linux)
{
enum
{
_IOFBF = 0,
_IOLBF = 1,
_IONBF = 2,
}
}
version (Win32)
{
const FILE *stdin = &_iob[0];
const FILE *stdout = &_iob[1];
const FILE *stderr = &_iob[2];
const FILE *stdaux = &_iob[3];
const FILE *stdprn = &_iob[4];
}
version (linux)
{
FILE *stdin;
FILE *stdout;
FILE *stderr;
}
version (Win32)
{
const char[] _P_tmpdir = "\\";
const wchar[] _wP_tmpdir = "\\";
const int L_tmpnam = _P_tmpdir.length + 12;
}
alias int fpos_t;
alias ubyte* va_list;
char * tmpnam(char *);
FILE * fopen(char *,char *);
FILE * _fsopen(char *,char *,int );
FILE * freopen(char *,char *,FILE *);
int fseek(FILE *,int,int);
int ftell(FILE *);
char * fgets(char *,int,FILE *);
int fgetc(FILE *);
int _fgetchar();
int fflush(FILE *);
int fclose(FILE *);
int fputs(char *,FILE *);
char * gets(char *);
int fputc(int,FILE *);
int _fputchar(int);
int puts(char *);
int ungetc(int,FILE *);
size_t fread(void *,size_t,size_t,FILE *);
size_t fwrite(void *,size_t,size_t,FILE *);
//int printf(char *,...);
int fprintf(FILE *,char *,...);
int vfprintf(FILE *,char *,va_list);
int vprintf(char *,va_list);
int sprintf(char *,char *,...);
int vsprintf(char *,char *,va_list);
int scanf(char *,...);
int fscanf(FILE *,char *,...);
int sscanf(char *,char *,...);
void setbuf(FILE *,char *);
int setvbuf(FILE *,char *,int,size_t);
int remove(char *);
int rename(char *,char *);
void perror(char *);
int fgetpos(FILE *,fpos_t *);
int fsetpos(FILE *,fpos_t *);
FILE * tmpfile();
int _rmtmp();
int _fillbuf(FILE *);
int _flushbu(int, FILE *);
int getw(FILE *FHdl);
int putw(int Word, FILE *FilePtr);
int getchar() { return getc(stdin); }
int putchar(int c) { return putc(c,stdout); }
int getc(FILE *fp) { return fgetc(fp); }
int putc(int c,FILE *fp) { return fputc(c,fp); }
version (Win32)
{
int ferror(FILE *fp) { return fp._flag&_IOERR; }
int feof(FILE *fp) { return fp._flag&_IOEOF; }
void clearerr(FILE *fp) { fp._flag &= ~(_IOERR|_IOEOF); }
void rewind(FILE *fp) { fseek(fp,0L,SEEK_SET); fp._flag&=~_IOERR; }
int _bufsize(FILE *fp) { return fp._bufsiz; }
int fileno(FILE *fp) { return fp._file; }
int _snprintf(char *,size_t,char *,...);
int _vsnprintf(char *,size_t,char *,va_list);
}
version (linux)
{
int ferror(FILE *fp);
int feof(FILE *fp);
void clearerr(FILE *fp);
void rewind(FILE *fp);
int _bufsize(FILE *fp);
int fileno(FILE *fp);
int snprintf(char *,size_t,char *,...);
int vsnprintf(char *,size_t,char *,va_list);
}
int unlink(char *);
FILE * fdopen(int, char *);
int fgetchar();
int fputchar(int);
int fcloseall();
int filesize(char *);
int flushall();
int getch();
int getche();
int kbhit();
char * tempnam (char *dir, char *pfx);
wchar * _wtmpnam(wchar *);
FILE * _wfopen(wchar *, wchar *);
FILE * _wfsopen(wchar *, wchar *, int);
FILE * _wfreopen(wchar *, wchar *, FILE *);
wchar * fgetws(wchar *, int, FILE *);
int fputws(wchar *, FILE *);
wchar * _getws(wchar *);
int _putws(wchar *);
//int wprintf(wchar *, ...);
int fwprintf(FILE *, wchar *, ...);
int vwprintf(wchar *, va_list);
int vfwprintf(FILE *, wchar *, va_list);
int swprintf(wchar *, wchar *, ...);
int vswprintf(wchar *, wchar *, va_list);
int _snwprintf(wchar *, size_t, wchar *, ...);
int _vsnwprintf(wchar *, size_t, wchar *, va_list);
int wscanf(wchar *, ...);
int fwscanf(FILE *, wchar *, ...);
int swscanf(wchar *, wchar *, ...);
int _wremove(wchar *);
void _wperror(wchar *);
FILE * _wfdopen(int, wchar *);
wchar * _wtempnam(wchar *, wchar *);
wchar fgetwc(FILE *);
wchar _fgetwchar();
wchar fputwc(wchar, FILE *);
wchar _fputwchar(wchar);
wchar ungetwc(wchar, FILE *);
wchar getwchar() { return fgetwc(stdin); }
wchar putwchar(wchar c) { return fputwc(c,stdout); }
wchar getwc(FILE *fp) { return fgetwc(fp); }
wchar putwc(wchar c, FILE *fp) { return fputwc(c, fp); }