home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0000 - 0009 / ibm0000-0009 / ibm0003.tar / ibm0003 / C_DISK2.ZIP / STDIO.H < prev    next >
Encoding:
C/C++ Source or Header  |  1988-10-03  |  3.5 KB  |  128 lines

  1. /*_ stdio.h   Mon Oct  3 1988   Modified by: Walter Bright */
  2. /* Copyright (C) 1985-1988 by Northwest Software    */
  3. /* All rights reserved.                    */
  4.  
  5. /* Standard I/O header file    */
  6.  
  7. #ifndef STDIO_H            /* if not already included        */
  8. #define STDIO_H
  9.  
  10. #define    _NFILE    20        /* # of files we can have open at once    */
  11. #define EOF (-1)
  12.  
  13. #define SEEK_SET    0    /* seek from start of file    */
  14. #define SEEK_CUR    1    /* relative to current position    */
  15. #define SEEK_END    2    /* relative to end of file    */
  16.  
  17. #ifdef LPTR
  18. #define NULL 0L
  19. #else
  20. #define NULL 0
  21. #endif
  22.  
  23. /* I/O buffer size    */
  24. #define BUFSIZ        512
  25. #ifdef SPTR
  26. #define BIGBUF        (40 * BUFSIZ)
  27. #endif
  28.  
  29. #ifndef size_t
  30. #define size_t    unsigned
  31. #endif
  32.  
  33. /**** structure for high level file I/O    ********/
  34.  
  35. typedef struct
  36. {
  37.     char    *_ptr;        /* pointer to next character position    */
  38.     int    _cnt;        /* number of characters left in buffer    */
  39.     char    *_base;        /* pointer to start of buffer        */
  40.     int    _flag;        /* various info about this channel    */
  41.     int    _file;        /* file "handle"            */
  42.     unsigned _bufsiz;    /* size of buffer being used        */
  43. #ifdef    BIGBUF
  44.     int    _seg;        /* segment of buffer if _IOBIGBUF    */
  45. #endif
  46. } FILE;
  47.  
  48. extern    FILE _iob[_NFILE];
  49.  
  50. /***********************
  51.  * Flags for FILE._flag
  52.  *    _IOREAD        file is opened for read
  53.  *    _IOWRT        file is opened for write
  54.  *    _IONBF        file I/O is not buffered
  55.  *    _IOLBF        file is line buffered
  56.  *    _IOFBF        file is fully buffered
  57.  *    _IOEOF        end of file has occurred
  58.  *    _IOERR        error has occurred
  59.  *    _IORW        file is opened for reading and writing
  60.  *    _IOTRAN        I/O is translated (not binary)
  61.  *    _IOBIGBUF    the buffer is outside the data segment
  62.  *    _IOMYBUF    buffer allocated by setvbuf()
  63.  */
  64.  
  65. #define _IOREAD        1
  66. #define _IOWRT        2
  67. #define _IONBF        4
  68. #define _IOMYBUF    8
  69. #define _IOEOF        0x10
  70. #define _IOERR        0x20
  71. #define    _IOLBF        0x40
  72. #define _IORW        0x80
  73. #define _IOFBF        0
  74.  
  75. #define _IOTRAN        0x100
  76. #ifdef    BIGBUF
  77. #define _IOBIGBUF    0x400
  78. #endif
  79.  
  80. #define    stdin    (&_iob[0])
  81. #define stdout    (&_iob[1])
  82. #define stderr    (&_iob[2])
  83. #define stdaux    (&_iob[3])
  84. #define stdprn    (&_iob[4])
  85.  
  86. #define getchar()    getc(stdin)
  87. #define putchar(c)    putc((c),stdout)
  88. #define getc(fp)    fgetc(fp)
  89. #define putc(c,fp)    fputc((c),(fp))
  90.  
  91. #define fileno(fp)    ((fp)->_file)
  92. #define ferror(fp)    ((fp)->_flag&_IOERR)
  93. #define feof(fp)    ((fp)->_flag&_IOEOF)
  94. #define clearerr(fp)    ((fp)->_flag&=~(_IOERR|_IOEOF))
  95. #define rewind(fp)    (fseek(fp,0L,0),((fp)->_flag&=~_IOERR))
  96.  
  97. #if 0
  98. #define max(x,y) (((x) > (y)) ? (x) : (y))
  99. #define min(x,y) (((x) > (y)) ? (y) : (x))
  100. #endif
  101.  
  102. extern int bdos(char,...);
  103. extern int getche(void),getch(void);
  104. extern FILE *fopen(char *,char *),*freopen(char *,char *,FILE *);
  105. extern int fseek(FILE *,long,int);
  106. extern long ftell(FILE *),filesize(char *);
  107. extern char *gets(char *),*fgets(char *,unsigned,FILE *);
  108. extern int fgetc(FILE *);
  109. extern int fflush(FILE *),fclose(FILE *);
  110. extern int flushall(void);
  111. extern int fcloseall(void);
  112. extern int fwrite(void *,unsigned,unsigned,FILE *);
  113. extern int fread(void *,unsigned,unsigned,FILE *);
  114. extern int fputs(char *,FILE *),fputc(int,FILE *);
  115. extern int puts(char *),ungetc(int,FILE *);
  116. extern int printf(char *,...),fprintf(FILE *,char *,...);
  117. extern int vfprintf(FILE *,char *,char *);
  118. extern int vprintf(char *,char *);
  119. extern int sprintf(char *,char *,...),vsprintf(char *,char *,char *);
  120. extern int scanf(char *,...),fscanf(FILE *,char *,...),
  121.     sscanf(char *,char *,...);
  122. extern void setbuf(FILE *,char *);
  123. extern int setvbuf(FILE *,char *,int,size_t);
  124. extern int rename(char *,char *);
  125.  
  126. #endif /* STDIO_H */
  127.  
  128.