174 lines
4.6 KiB
C
174 lines
4.6 KiB
C
/**
|
|
*
|
|
* This header file defines the information used by the standard I/O
|
|
* package.
|
|
*
|
|
**/
|
|
#define _BUFSIZ 512 /* standard buffer size */
|
|
#define BUFSIZ 512 /* standard buffer size */
|
|
#define _NFILE 20 /* maximum number of files */
|
|
|
|
struct _iobuf
|
|
{
|
|
unsigned char *_ptr; /* current buffer pointer */
|
|
int _rcnt; /* current byte count for reading */
|
|
int _wcnt; /* current byte count for writing */
|
|
unsigned char *_base; /* base address of I/O buffer */
|
|
int _size; /* size of buffer */
|
|
int _flag; /* control flags */
|
|
unsigned char _file; /* file number */
|
|
unsigned char _cbuff; /* single char buffer */
|
|
};
|
|
|
|
extern struct _iobuf _iob[_NFILE];
|
|
|
|
/**
|
|
*
|
|
* Definitions associated with _iobuf._flag
|
|
*
|
|
*/
|
|
#define _IOFBF 0 /* fully buffered (for setvbuf) */
|
|
#define _IOREAD 1 /* read flag */
|
|
#define _IOWRT 2 /* write flag */
|
|
#define _IONBF 4 /* non-buffered flag */
|
|
#define _IOMYBUF 8 /* private buffer flag */
|
|
#define _IOEOF 16 /* end-of-file flag */
|
|
#define _IOERR 32 /* error flag */
|
|
#define _IOLBF 64 /* line-buffered flag */
|
|
#define _IORW 128 /* read-write (update) flag */
|
|
#define _IOAPP 0x4000 /* append flag */
|
|
#define _IOXLAT 0x8000 /* translation flag */
|
|
|
|
#ifndef NULL
|
|
#if SPTR
|
|
#define NULL 0 /* null pointer value */
|
|
#else
|
|
#define NULL 0L
|
|
#endif
|
|
#endif
|
|
#define FILE struct _iobuf /* shorthand */
|
|
#define EOF (-1) /* end-of-file code */
|
|
|
|
|
|
#define stdin (&_iob[0]) /* standard input file pointer */
|
|
#define stdout (&_iob[1]) /* standard output file pointer */
|
|
#define stderr (&_iob[2]) /* standard error file pointer */
|
|
#define stdaux (&_iob[3]) /* standard auxiliary file pointer */
|
|
#define stdprt (&_iob[4]) /* standard printer file pointer */
|
|
|
|
|
|
#define getc(p) (--(p)->_rcnt>=0? *(p)->_ptr++:_filbf(p))
|
|
#define getchar() getc(stdin)
|
|
#define putc(c,p) (--(p)->_wcnt>=0? ((int)(*(p)->_ptr++=(c))):_flsbf((c),p))
|
|
#define putchar(c) putc(c,stdout)
|
|
#define feof(p) (((p)->_flag&_IOEOF)!=0)
|
|
#define ferror(p) (((p)->_flag&_IOERR)!=0)
|
|
#define fileno(p) (p)->_file
|
|
#define rewind(fp) fseek(fp,0L,0)
|
|
#define fflush(fp) _flsbf(-1,fp)
|
|
#define clearerr(fp) clrerr(fp)
|
|
|
|
#ifndef NARGS
|
|
extern void clrerr(FILE *);
|
|
extern int cprintf(char *, );
|
|
extern int cscanf(char *, );
|
|
extern int fclose(FILE *);
|
|
extern int fcloseall(void);
|
|
extern FILE *fdopen(int, char *);
|
|
extern int fgetc(FILE *);
|
|
extern int fgetchar(void);
|
|
extern char *fgets(char *, int, FILE *);
|
|
extern int flushall(void);
|
|
extern int fmode(FILE *, int);
|
|
extern FILE *fopen(char *, char *);
|
|
extern FILE *fopene(char *, char *, char *);
|
|
extern int fprintf(FILE *, char *, );
|
|
extern int fputc(int, FILE *);
|
|
extern int fputchar(int);
|
|
extern int fputs(char *, FILE *);
|
|
extern int fread(char *, int, int, FILE *);
|
|
extern FILE *freopen(char *, char *, FILE *);
|
|
extern int fscanf(FILE*, char *, );
|
|
extern int fseek(FILE *, long, int);
|
|
extern long ftell(FILE *);
|
|
extern int fwrite(char *, int, int, FILE *);
|
|
extern char *gets(char *);
|
|
extern int printf(char *, );
|
|
extern int puts(char *);
|
|
extern scanf(char *, );
|
|
extern int setbuf(FILE *, char *);
|
|
extern int setnbf(FILE *);
|
|
extern int setvbuf(FILE*, char *, int, int);
|
|
extern int sprintf(char *, char *, );
|
|
extern sscanf(char *, char *, );
|
|
extern int ungetc(int, FILE *);
|
|
extern int _filbf(FILE *);
|
|
extern int _flsbf(int, FILE *);
|
|
|
|
#else
|
|
extern void clrerr();
|
|
extern int cprintf();
|
|
extern int cscanf();
|
|
extern int fclose();
|
|
extern int fcloseall();
|
|
extern FILE *fdopen();
|
|
extern int fgetc();
|
|
extern int fgetchar();
|
|
extern char *fgets();
|
|
extern int flushall();
|
|
extern int fmode();
|
|
extern FILE *fopen();
|
|
extern FILE *fopene();
|
|
extern int fprintf();
|
|
extern int fputc();
|
|
extern int fputchar();
|
|
extern int fputs();
|
|
extern int fread();
|
|
extern FILE *freopen();
|
|
extern int fscanf();
|
|
extern int fseek();
|
|
extern long ftell();
|
|
extern int fwrite();
|
|
extern char *gets();
|
|
extern int printf();
|
|
extern int puts();
|
|
extern scanf();
|
|
extern int setbuf();
|
|
extern int setnbf();
|
|
extern int setvbuf();
|
|
extern int sprintf();
|
|
extern sscanf();
|
|
extern int ungetc();
|
|
extern int _filbf();
|
|
extern int _flsbf();
|
|
#endif
|
|
|
|
/**
|
|
*
|
|
* Miscellaneous I/O services
|
|
*
|
|
*/
|
|
#ifndef NARGS
|
|
extern int access(char *, int);
|
|
extern int chdir(char *);
|
|
extern int chmod(char *, int);
|
|
extern char *getcwd(char *, int);
|
|
extern int mkdir(char *);
|
|
extern int perror(char *);
|
|
extern int rename(char *, char *);
|
|
extern int rmdir(char *);
|
|
extern char *tmpnam(char *);
|
|
#else
|
|
extern int access();
|
|
extern int chdir();
|
|
extern int chmod();
|
|
extern char *getcwd();
|
|
extern int mkdir();
|
|
extern int perror();
|
|
extern int rename();
|
|
extern int rmdir();
|
|
extern char *tmpnam();
|
|
#endif
|
|
|
|
|