home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / fish / languages / dice_443 / include / stdio.h < prev    next >
C/C++ Source or Header  |  1991-01-12  |  4KB  |  149 lines

  1.  
  2. /*
  3.  *  STDIO.H
  4.  *
  5.  *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
  6.  */
  7.  
  8. #ifndef _STDIO_H
  9. #define _STDIO_H
  10.  
  11. #ifndef _STDDEF_H
  12. #include <stddef.h>
  13. #endif
  14.  
  15. #ifndef _STDARG_H
  16. typedef void *va_list;
  17. #endif
  18.  
  19. typedef long    fpos_t;
  20.  
  21. typedef struct FILE {
  22.     struct FILE *sd_Next;
  23.     struct FILE **sd_Prev;
  24.     unsigned char   *sd_RBuf;
  25.     unsigned char   *sd_RPtr;
  26.     unsigned char   *sd_WBuf;
  27.     unsigned char   *sd_WPtr;
  28.     long    sd_BufSiz;
  29.     int     sd_RLeft;
  30.     int     sd_WLeft;
  31.     int     sd_Flags;
  32.     int     sd_Error;        /*    error: 0 / non-0    */
  33.     fpos_t  sd_Offset;        /*    level 1 current off */
  34.     int     sd_Fd;
  35.     short   sd_UC;        /*    ungotten character or -1    */
  36.     char    *sd_Name;        /*    use for tmpfile()   */
  37. } FILE;
  38.  
  39. typedef struct _IOFDS {
  40.     long    fd_Fh;
  41.     long    fd_Flags;
  42.     long    (*fd_Exec)(long, int, void *, void *);   /*  exec function       */
  43.     long    fd_Reserved;
  44. } _IOFDS;
  45.  
  46. extern FILE _Iob[3];            /*    fixed fps        */
  47. extern FILE *_Iod;            /*    dynamic fps        */
  48.  
  49. extern _IOFDS _IoStaticFD[3];        /*    0,1,2            */
  50. extern _IOFDS *_IoFD;            /*    descriptors        */
  51. extern short _IoFDLimit;
  52.  
  53. #define __SIF_ERROR    0x0001    /*  XXX */
  54. #define __SIF_EOF    0x0002
  55. #define __SIF_READ    0x0004
  56. #define __SIF_WRITE    0x0008
  57. #define __SIF_IOLBF    0x0010
  58. #define __SIF_REMOVE    0x0020    /*  unlink file after closing    */
  59. #define __SIF_APPEND    0x0040
  60. #define __SIF_NOFREE    0x0080    /*  not a freeable descriptor    */
  61. #define __SIF_OPEN    0x0100    /*  file is open        */
  62. #define __SIF_MYBUF    0x0200    /*  I allocated the buffer(s)   */
  63. #define __SIF_BINARY    0x0400
  64. #define __SIF_RAW    0x0800    /*  RAW terminal , see setvbuf    */
  65. #define __SIF_FILE    0x1000    /*  a seekable file        */
  66.  
  67. #define _IOFBF    -1
  68. #define _IOLBF    __SIF_IOLBF
  69. #define _IONBF    0
  70.  
  71. #define BUFSIZ    1024
  72. #define EOF    -1
  73. #define FILENAME_MAX    1024
  74. #define FOPEN_MAX    20    /*  lets be reasonable        */
  75. #define L_tmpnam    32
  76. #define SEEK_SET    0
  77. #define SEEK_CUR    1
  78. #define SEEK_END    2
  79. #define TMP_MAX     4096
  80. #define stdin    (&_Iob[0])
  81. #define stdout    (&_Iob[1])
  82. #define stderr    (&_Iob[2])
  83.  
  84. #define clearerr(fi)    (((fi)->sd_Flags &= ~__SIF_EOF), ((fi)->sd_Error = 0))
  85. #define feof(fi)        ((fi)->sd_Flags & __SIF_EOF)
  86. #define ferror(fi)      ((fi)->sd_Error)
  87. #define fileno(fi)      ((fi)->sd_Fd)
  88.  
  89. extern void perror(const char *);
  90.  
  91. extern int    fclose(FILE *);
  92. extern int    fflush(FILE *);
  93. extern FILE * fopen(const char *, const char *);
  94. extern FILE * freopen(const char *, const char *, FILE *);
  95. extern void   setbuf(FILE *, char *);
  96. extern int    setvbuf(FILE *, char *, int, size_t);
  97.  
  98. extern int    remove(const char *);
  99. extern int    rename(const char *, const char *);
  100. extern FILE * tmpfile(void);
  101. extern char * tmpnam(char *);
  102.  
  103. extern int    fgetpos(FILE *, fpos_t *);
  104. extern int    fseek(FILE *, long, int);
  105. extern int    fsetpos(FILE *, const fpos_t *);
  106. extern long   ftell(FILE *);
  107. extern void   rewind(FILE *);
  108.  
  109. extern int    fgetc(FILE *);
  110. extern char * fgets(char *, int, FILE *);
  111. extern int    fputc(char, FILE *);
  112. extern int    fputs(const char *, FILE *);
  113.  
  114. #define getc(fi)   ( ((fi)->sd_UC >= 0) ? fgetc(fi) : ((fi)->sd_RLeft <= 0) ? fgetc(fi) : (--(fi)->sd_RLeft, (int)*(fi)->sd_RPtr++))
  115. #define putc(c,fi) (((c) == '\n' || (fi)->sd_WLeft <= 0) ? fputc((c),(fi)) : (*(fi)->sd_WPtr++ = (c), --(fi)->sd_WLeft, (c)))
  116.  
  117. #define getchar()  fgetc(stdin)
  118. #define putchar(c) fputc((c),stdout)
  119.  
  120. extern char * gets(char *);
  121. extern int    puts(const char *);
  122. extern int    ungetc(int, FILE *);
  123.  
  124. extern size_t fread(void *, size_t, size_t, FILE *);
  125. extern size_t fwrite(const void *, size_t, size_t, FILE *);
  126.  
  127. extern int    fprintf(FILE *, const char *, ...);
  128. extern int    fscanf(FILE *, const char *, ...);
  129. extern int    printf(const char *, ...);
  130. extern int    scanf(const char *, ...);
  131. extern int    sprintf(char *, const char *, ...);
  132. extern int    sscanf(char *, const char *, ...);
  133.  
  134. extern int    vfprintf(FILE *, const char *, va_list);
  135. extern int    vprintf(const char *, va_list);
  136. extern int    vsprintf(char *, const char *, va_list);
  137.  
  138. /*
  139.  *  Standard, but not ANSI
  140.  */
  141.  
  142. extern FILE * fdopen(int, const char *);
  143. extern int    chdir(const char *);
  144. extern char * getcwd(char *, int);
  145. extern int    unlink(const char *);
  146.  
  147. #endif
  148.  
  149.