www.pudn.com > bc45.zip > STDIO.H, change:1992-06-10,size:8784b


/*  stdio.h 
 
    Definitions for stream input/output. 
 
    Copyright (c) 1987, 1992 by Borland International 
    All Rights Reserved. 
*/ 
 
#ifndef __STDIO_H 
#define __STDIO_H 
 
#if !defined(___DEFS_H) 
#include <_defs.h> 
#endif 
 
#if !defined(___NFILE_H) 
#include <_nfile.h> 
#endif 
 
#ifndef NULL 
#include <_null.h> 
#endif 
 
#ifndef _SIZE_T 
#define _SIZE_T 
typedef unsigned size_t; 
#endif 
 
/* Definition of the file position type 
*/ 
typedef long    fpos_t; 
 
 
/* Definition of the control structure for streams 
*/ 
typedef struct  { 
        int             level;          /* fill/empty level of buffer */ 
        unsigned        flags;          /* File status flags          */ 
        char            fd;             /* File descriptor            */ 
        unsigned char   hold;           /* Ungetc char if no buffer   */ 
        int             bsize;          /* Buffer size                */ 
        unsigned char   _FAR *buffer;   /* Data transfer buffer       */ 
        unsigned char   _FAR *curp;     /* Current active pointer     */ 
        unsigned        istemp;         /* Temporary file indicator   */ 
        short           token;          /* Used for validity checking */ 
}       FILE;                           /* This is the FILE object    */ 
 
/* Bufferisation type to be used as 3rd argument for "setvbuf" function 
*/ 
#define _IOFBF  0 
#define _IOLBF  1 
#define _IONBF  2 
 
/*  "flags" bits definitions 
*/ 
#define _F_RDWR 0x0003                  /* Read/write flag       */ 
#define _F_READ 0x0001                  /* Read only file        */ 
#define _F_WRIT 0x0002                  /* Write only file       */ 
#define _F_BUF  0x0004                  /* Malloc'ed Buffer data */ 
#define _F_LBUF 0x0008                  /* line-buffered file    */ 
#define _F_ERR  0x0010                  /* Error indicator       */ 
#define _F_EOF  0x0020                  /* EOF indicator         */ 
#define _F_BIN  0x0040                  /* Binary file indicator */ 
#define _F_IN   0x0080                  /* Data is incoming      */ 
#define _F_OUT  0x0100                  /* Data is outgoing      */ 
#define _F_TERM 0x0200                  /* File is a terminal    */ 
 
/* End-of-file constant definition 
*/ 
#define EOF (-1)            /* End of file indicator */ 
 
/* Number of files that can be open simultaneously 
*/ 
#if __STDC__ 
#define FOPEN_MAX (_NFILE_ - 2) /* (_NFILE_ - stdaux & stdprn) */ 
#else 
#define FOPEN_MAX (_NFILE_)     /* Able to have 20 files */ 
#define SYS_OPEN  (_NFILE_) 
#endif 
 
#define FILENAME_MAX 80 
 
/* Default buffer size use by "setbuf" function 
*/ 
#define BUFSIZ  512         /* Buffer size for stdio */ 
 
/* Size of an arry large enough to hold a temporary file name string 
*/ 
#define L_ctermid   5       /* CON: plus null byte */ 
#define P_tmpdir    ""      /* temporary directory */ 
#define L_tmpnam    13      /* tmpnam buffer size */ 
 
/* Constants to be used as 3rd argument for "fseek" function 
*/ 
#define SEEK_CUR    1 
#define SEEK_END    2 
#define SEEK_SET    0 
 
/* Number of unique file names that shall be generated by "tmpnam" function 
*/ 
#define TMP_MAX     0xFFFF 
 
/* Standard I/O predefined streams 
*/ 
 
#if !defined( _RTLDLL ) 
extern  FILE    _Cdecl _streams[]; 
extern  unsigned    _Cdecl _nfile; 
 
#define stdin   (&_streams[0]) 
#define stdout  (&_streams[1]) 
#define stderr  (&_streams[2]) 
 
#if !__STDC__ 
#define stdaux  (&_streams[3]) 
#define stdprn  (&_streams[4]) 
#endif 
 
#else 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
FILE far * far __getStream(int); 
#ifdef __cplusplus 
} 
#endif 
 
#define stdin   __getStream(0) 
#define stdout  __getStream(1) 
#define stderr  __getStream(2) 
#define stdaux  __getStream(3) 
#define stdprn  __getStream(4) 
 
#endif 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
void    _Cdecl clearerr(FILE _FAR *__stream); 
int     _Cdecl _FARFUNC fclose(FILE _FAR *__stream); 
int     _Cdecl _FARFUNC fflush(FILE _FAR *__stream); 
int     _Cdecl _FARFUNC fgetc(FILE _FAR *__stream); 
int     _Cdecl fgetpos(FILE _FAR *__stream, fpos_t _FAR *__pos); 
char   _FAR *_Cdecl _FARFUNC fgets(char _FAR *__s, int __n, FILE _FAR *__stream); 
FILE   _FAR *_Cdecl _FARFUNC fopen(const char _FAR *__path, const char _FAR *__mode); 
int     _Cdecl _FARFUNC fprintf(FILE _FAR *__stream, const char _FAR *__format, ...); 
int     _Cdecl _FARFUNC fputc(int __c, FILE _FAR *__stream); 
int     _Cdecl _FARFUNC fputs(const char _FAR *__s, FILE _FAR *__stream); 
size_t  _Cdecl _FARFUNC fread(void _FAR *__ptr, size_t __size, size_t __n, 
                     FILE _FAR *__stream); 
FILE   _FAR *_Cdecl _FARFUNC freopen(const char _FAR *__path, const char _FAR *__mode, 
                            FILE _FAR *__stream); 
int     _Cdecl _FARFUNC fscanf(FILE _FAR *__stream, const char _FAR *__format, ...); 
int     _Cdecl _FARFUNC fseek(FILE _FAR *__stream, long __offset, int __whence); 
int     _Cdecl fsetpos(FILE _FAR *__stream, const fpos_t _FAR *__pos); 
long    _Cdecl _FARFUNC ftell(FILE _FAR *__stream); 
size_t  _Cdecl _FARFUNC fwrite(const void _FAR *__ptr, size_t __size, size_t __n, 
                      FILE _FAR *__stream); 
char   _FAR *_Cdecl gets(char _FAR *__s); 
void    _Cdecl perror(const char _FAR *__s); 
int     _Cdecl printf(const char _FAR *__format, ...); 
int     _Cdecl puts(const char _FAR *__s); 
int     _CType remove(const char _FAR *__path); 
int     _CType _FARFUNC rename(const char _FAR *__oldname,const char _FAR *__newname); 
void    _Cdecl _FARFUNC rewind(FILE _FAR *__stream); 
int     _Cdecl scanf(const char _FAR *__format, ...); 
void    _Cdecl setbuf(FILE _FAR *__stream, char _FAR *__buf); 
int     _Cdecl _FARFUNC setvbuf(FILE _FAR *__stream, char _FAR *__buf, 
                       int __type, size_t __size); 
int     _Cdecl _FARFUNC sprintf(char _FAR *__buffer, const char _FAR *__format, ...); 
int     _Cdecl _FARFUNC sscanf(const char _FAR *__buffer, 
                      const char _FAR *__format, ...); 
char   _FAR *_Cdecl _FARFUNC strerror(int __errnum); 
FILE   _FAR *_Cdecl _FARFUNC tmpfile(void); 
char   _FAR *_Cdecl _FARFUNC tmpnam(char _FAR *__s); 
int     _Cdecl _FARFUNC ungetc(int __c, FILE _FAR *__stream); 
int     _Cdecl _FARFUNC vfprintf(FILE _FAR *__stream, const char _FAR *__format, 
                        void _FAR *__arglist); 
int     _Cdecl _FARFUNC vfscanf(FILE _FAR *__stream, const char _FAR *__format, 
                        void _FAR *__arglist); 
int     _CType vprintf(const char _FAR *__format, void _FAR *__arglist); 
int     _Cdecl vscanf(const char _FAR *__format, void _FAR *__arglist); 
int     _Cdecl _FARFUNC vsprintf(char _FAR *__buffer, const char _FAR *__format, 
                        void _FAR *__arglist); 
int     _Cdecl _FARFUNC vsscanf(const char _FAR *__buffer, const char _FAR *__format, 
                        void _FAR *__arglist); 
int     _CType unlink(const char _FAR *__path); 
int     _Cdecl getc(FILE _FAR *__fp); 
 
int     _Cdecl getchar(void); 
int     _Cdecl putchar(const int __c); 
 
int     _Cdecl putc(const int __c, FILE _FAR *__fp); 
int     _Cdecl feof(FILE _FAR *__fp); 
int     _Cdecl ferror(FILE _FAR *__fp); 
 
 
#if !__STDC__ 
int     _Cdecl _FARFUNC fcloseall(void); 
FILE   _FAR *_Cdecl _FARFUNC fdopen(int __handle, char _FAR *__type); 
int     _Cdecl _FARFUNC fgetchar(void); 
int     _Cdecl _FARFUNC flushall(void); 
int     _Cdecl _FARFUNC fputchar(int __c); 
FILE   _FAR * _Cdecl _fsopen (const char _FAR *__path, const char _FAR *__mode, 
                  int __shflag); 
int     _Cdecl getw(FILE _FAR *__stream); 
int     _Cdecl putw(int __w, FILE _FAR *__stream); 
int     _Cdecl rmtmp(void); 
char   _FAR * _Cdecl _FARFUNC _strerror(const char _FAR *__s); 
char   _FAR * _Cdecl _FARFUNC tempnam(char _FAR *__dir, char _FAR *__pfx); 
 
#define fileno(f)       ((f)->fd) 
#ifdef __MSC 
#define _fileno(f)  fileno(f) 
#endif 
 
#endif  /* !__STDC__ */ 
 
int      _Cdecl _FARFUNC _fgetc(FILE _FAR *__stream);           /* used by getc() macro */ 
int      _Cdecl _FARFUNC _fputc(char __c, FILE _FAR *__stream); /* used by putc() macro */ 
 
void    _Cdecl _InitEasyWin(void);  /* Initialization call for Easy Windows */ 
 
#ifdef  __cplusplus 
} 
#endif 
 
/*  The following macros provide for common functions */ 
 
#define ferror(f)   ((f)->flags & _F_ERR) 
#define feof(f)     ((f)->flags & _F_EOF) 
 
#define getc(f) \ 
  ((--((f)->level) >= 0) ? (unsigned char)(*(f)->curp++) : \ 
    _fgetc (f)) 
 
#define putc(c,f) \ 
  ((++((f)->level) < 0) ? (unsigned char)(*(f)->curp++=(c)) : \ 
    _fputc ((c),f)) 
 
#define getchar()  getc(stdin) 
#define putchar(c) putc((c), stdout) 
 
#define ungetc(c,f) ungetc((c),f)   /* traditionally a macro */ 
 
#endif