home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Programme_zum_Heft / Programmieren / Kurztests / DiceC / include / stdio.h < prev    next >
C/C++ Source or Header  |  1994-02-01  |  4KB  |  157 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.     char    *fd_FileName;   /*    file name for fstat() under 1.3 */
  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. extern int _bufsiz;            /*    default BUFSIZ        */
  53.  
  54. #define __SIF_ERROR    0x0001    /*  XXX */
  55. #define __SIF_EOF    0x0002
  56. #define __SIF_READ    0x0004
  57. #define __SIF_WRITE    0x0008
  58. #define __SIF_IOLBF    0x0010
  59. #define __SIF_REMOVE    0x0020    /*  unlink file after closing    */
  60. #define __SIF_APPEND    0x0040
  61. #define __SIF_NOFREE    0x0080    /*  not a freeable descriptor    */
  62. #define __SIF_OPEN    0x0100    /*  file is open        */
  63. #define __SIF_MYBUF    0x0200    /*  I allocated the buffer(s)   */
  64. #define __SIF_BINARY    0x0400
  65. #define __SIF_RAW    0x0800    /*  RAW terminal , see setvbuf    */
  66. #define __SIF_FILE    0x1000    /*  a seekable file        */
  67.  
  68. #define _IOFBF    -1
  69. #define _IOLBF    __SIF_IOLBF
  70. #define _IONBF    0
  71.  
  72. #define BUFSIZ    1024
  73. #define EOF    -1
  74. #define FILENAME_MAX    1024
  75. #define FOPEN_MAX    20    /*  lets be reasonable        */
  76. #define L_tmpnam    32
  77. #define SEEK_SET    0
  78. #define SEEK_CUR    1
  79. #define SEEK_END    2
  80. #define TMP_MAX     4096
  81. #define stdin    (&_Iob[0])
  82. #define stdout    (&_Iob[1])
  83. #define stderr    (&_Iob[2])
  84.  
  85. #define clearerr(fi)    (((fi)->sd_Flags &= ~__SIF_EOF), ((fi)->sd_Error = 0))
  86. #define feof(fi)        ((fi)->sd_Flags & __SIF_EOF)
  87. #define ferror(fi)      ((fi)->sd_Error)
  88. #define fileno(fi)      ((fi)->sd_Fd)
  89.  
  90. extern void perror(const char *);
  91.  
  92. extern int    fclose(FILE *);
  93. extern int    fflush(FILE *);
  94. extern FILE * fopen(const char *, const char *);
  95. extern FILE * freopen(const char *, const char *, FILE *);
  96. extern void   setbuf(FILE *, char *);
  97. extern int    setvbuf(FILE *, char *, int, size_t);
  98.  
  99. extern int    remove(const char *);
  100. extern int    rename(const char *, const char *);
  101. extern FILE * tmpfile(void);
  102. extern char * tmpnam(char *);
  103.  
  104. extern int    fgetpos(FILE *, fpos_t *);
  105. extern int    fseek(FILE *, long, int);
  106. extern int    fsetpos(FILE *, const fpos_t *);
  107. extern long   ftell(FILE *);
  108. extern void   rewind(FILE *);
  109.  
  110. extern int    fgetc(FILE *);
  111. extern char * fgets(char *, int, FILE *);
  112. extern int    fputc(char, FILE *);
  113. extern int    fputs(const char *, FILE *);
  114.  
  115. #define getc(fi)   ( ((fi)->sd_UC >= 0) ? fgetc(fi) : ((fi)->sd_RLeft <= 0) ? fgetc(fi) : (--(fi)->sd_RLeft, (int)*(fi)->sd_RPtr++))
  116. #define putc(c,fi) (((c) == '\n' || (fi)->sd_WLeft <= 0) ? fputc((c),(fi)) : (*(fi)->sd_WPtr++ = (c), --(fi)->sd_WLeft, (c)))
  117.  
  118. #define getchar()  fgetc(stdin)
  119. #define putchar(c) fputc((c),stdout)
  120.  
  121. extern char * gets(char *);
  122. extern int    puts(const char *);
  123. extern int    ungetc(int, FILE *);
  124.  
  125. extern size_t fread(void *, size_t, size_t, FILE *);
  126. extern size_t fwrite(const void *, size_t, size_t, FILE *);
  127.  
  128. extern int    fprintf(FILE *, const char *, ...);
  129. extern int    fscanf(FILE *, const char *, ...);
  130. extern int    printf(const char *, ...);
  131. extern int    scanf(const char *, ...);
  132. extern int    sprintf(char *, const char *, ...);
  133. extern int    sscanf(char *, const char *, ...);
  134.  
  135. extern int    vfprintf(FILE *, const char *, va_list);
  136. extern int    vprintf(const char *, va_list);
  137. extern int    vsprintf(char *, const char *, va_list);
  138.  
  139. /*
  140.  *  Standard, but not ANSI
  141.  */
  142.  
  143. extern FILE * fdopen(int, const char *);
  144. extern int    chdir(const char *);
  145. extern char * getcwd(char *, int);
  146. extern int    unlink(const char *);
  147.  
  148. /*
  149.  *  Amiga specific
  150.  */
  151.  
  152. extern int    fhprintf(long, const char *, ...);
  153. extern int    vfhprintf(long, const char *, va_list);
  154.  
  155. #endif
  156.  
  157.