home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixlib36d / clib / h / stdio < prev    next >
Text File  |  1994-02-26  |  4KB  |  191 lines

  1. /* stdio.h (c) Copyright 1990 H.Rogers */
  2.  
  3. #ifndef __STDIO_H
  4. #define __STDIO_H
  5.  
  6. #ifndef __STDARG_H
  7. #include <stdarg.h>
  8. #endif
  9.  
  10. #ifndef __SYS_TYPES_H
  11. #include <sys/types.h>
  12. #endif
  13.  
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17.  
  18. #define OPEN_MAX    64
  19.  
  20. #define FOPEN_MAX    64
  21. #define FILENAME_MAX    252
  22.  
  23. #define BUFSIZ        4096
  24. #define EOF        (-1)
  25.  
  26. #define SEEK_SET    0
  27. #define SEEK_CUR    1
  28. #define SEEK_END    2
  29.  
  30. typedef struct __iobuf
  31.   {
  32.   unsigned char *i_ptr;
  33.   unsigned char *i_base;
  34.   int        i_cnt;
  35.   unsigned char *o_ptr;
  36.   unsigned char *o_base;
  37.   int        o_cnt;
  38.   int        flag;
  39.   int        fd;
  40.   fpos_t    pos;
  41.   int        bufsiz;
  42.   } __FILE;
  43.  
  44. #define FILE __FILE
  45.  
  46. extern    FILE        __iob[FOPEN_MAX];
  47.  
  48. #define stdin        (&__iob[0])
  49. #define stdout        (&__iob[1])
  50. #define stderr        (&__iob[2])
  51.  
  52. #define _IOOMASK    0000003
  53.  
  54. #define _IOREAD     0000001
  55. #define _IOWRITE    0000002
  56. #define _IOAPPEND    0000004
  57.  
  58. #define _IOBF        0000070
  59.  
  60. #define _IONBF        0000010
  61. #define _IOLBF        0000020
  62. #define _IOFBF        0000040
  63.  
  64. #define _IOEOF        0000100
  65. #define _IOERR        0000200
  66.  
  67. #define _IOTTY        0000400
  68. #define _IOPIPE     0001000
  69.  
  70. #define feof(f)     ((f)->flag & _IOEOF)
  71. #define ferror(f)    ((f)->flag & _IOERR)
  72. #define fileno(f)    ((f)->fd)
  73. #define fisatty(f)    ((f)->flag & _IOTTY)
  74. #define fispipe(f)    ((f)->flag & _IOPIPE)
  75. #define fisopen(f)    ((f)->flag & (_IOREAD|_IOWRITE))
  76.  
  77. #define clearerr(f)    (void)((f)->flag &= (~(_IOEOF|_IOERR)))
  78.  
  79. extern    int    (feof)(FILE *);
  80. extern    int    (ferror)(FILE *);
  81. extern    int    (fileno)(FILE *);
  82. extern    int    (fisatty)(FILE *);
  83. extern    int    (fisopen)(FILE *);
  84.  
  85. extern    void    (clearerr)(FILE *);
  86.  
  87. extern    void    perror(const char *);
  88.  
  89. extern    void    __stdioinit(void);    /* initialise stdin,stdout & stderr */
  90. extern    void    __stdioexit(void);    /* close streams & delete tmpfile() */
  91.  
  92. extern    int    __filbuf(FILE *);    /* fill buffer */
  93. extern    int    __flsbuf(int,FILE *);    /* flush buffer */
  94.  
  95. extern    char    *__null;        /* null pointer output */
  96.  
  97. extern    FILE    *fopen(const char *,const char *);
  98. extern    FILE    *freopen(const char *,const char *,FILE *);
  99. extern    FILE    *fdopen(int,const char *);
  100. extern    int    fclose(FILE *);
  101. extern    int    fflush(FILE *);
  102.  
  103. extern    FILE    *popen(const char *,const char *);
  104. extern    int    pclose(FILE *);
  105.  
  106. extern    int    __fread(FILE *,char *,int);
  107. extern    int    __fwrite(FILE *,char *,int);
  108.  
  109. extern    size_t    fread(void *,size_t,size_t,FILE *);
  110. extern    size_t    fwrite(const void *,size_t,size_t,FILE *);
  111.  
  112. extern    void    setbuf(FILE *,char *);
  113. extern    int    setvbuf(FILE *,char *,int,size_t);
  114.  
  115. extern    int    ungetc(int,FILE *);
  116.  
  117. extern    int    fgetpos(FILE *,fpos_t *);
  118. extern    int    fsetpos(FILE *,const fpos_t *);
  119.  
  120. extern    int    fseek(FILE *,long,int);
  121. extern    long    ftell(FILE *);
  122. extern    void    rewind(FILE *);
  123.  
  124. #define getc(f) \
  125.     ((--((f)->i_cnt) >= 0 ? *((f)->i_ptr)++ : __filbuf(f)))
  126. #define getchar()    getc(stdin)
  127.  
  128. extern    int    fgetc(FILE *);
  129. extern    int    (getc)(FILE *);
  130. extern    int    (getchar)(void);
  131. extern    int    getw(FILE *);
  132.  
  133. #define putc(c,f) \
  134.     (((((f)->flag) & _IOLBF) && (c) == '\n') ? __flsbuf(c,f) : \
  135.     ((--((f)->o_cnt) > 0 ? (*((f)->o_ptr)++ = (c)) : __flsbuf(c,f))))
  136. #define putchar(c)    putc(c,stdout)
  137.  
  138. extern    int    fputc(int,FILE *);
  139. extern    int    (putc)(int,FILE *);
  140. extern    int    (putchar)(int);
  141. extern    int    putw(int,FILE *);
  142.  
  143. extern    char    *fgets(char *,int,FILE *);
  144. extern    char    *gets(char *);
  145.  
  146. extern    int    fputs(const char *,FILE *);
  147. extern    int    puts(const char *);
  148.  
  149. /* formatted I/O */
  150.  
  151. extern    int    __printf(char *,const char *,va_list);
  152. extern    int    __scanf(FILE *,const char *,va_list,int *);
  153.  
  154. extern    char    *__pbuf;    /* buffer for printf */
  155. extern    char    *__sbuf;    /* buffer for scanf */
  156.  
  157. extern    int    vsprintf(char *,const char *,va_list);
  158. extern    int    vfprintf(FILE *,const char *,va_list);
  159. extern    int    vprintf(const char *,va_list);
  160. extern    int    sprintf(char *,const char *,...);
  161. extern    int    fprintf(FILE *,const char *,...);
  162. extern    int    printf(const char *,...);
  163.  
  164. extern    int    sscanf(const char *,const char *,...);
  165. extern    int    fscanf(FILE *,const char *,...);
  166. extern    int    scanf(const char *,...);
  167.  
  168. #define P_tmpdir    "/tmp"
  169. #define L_tmpnam    255
  170. #define TMP_MAX     0x100
  171.  
  172. extern    int    remove(const char *);
  173. extern    int    rename(const char *,const char *);
  174. extern    FILE    *tmpfile(void);
  175. extern    char    *tmpnam(char *);
  176.  
  177. extern    char    *mktemp(char *);
  178. extern    int    mkstemp(char *);
  179.  
  180. extern    FILE        *__tmpf;
  181. extern    char        __tmpn[L_tmpnam + 1];
  182. extern    unsigned int    __tmpcnt;
  183.  
  184. #define __STDIOLIB__ static void __stdiolib(void) { __stdioinit(); }
  185.  
  186. #ifdef __cplusplus
  187.     }
  188. #endif
  189.  
  190. #endif
  191.