home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Programy / Programowanie / vbcc07e.lzx / vbcc / amigawos / include / stdio.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-20  |  4.9 KB  |  147 lines

  1. /*  stdio.h for vbcc Amiga WarpOS version  */
  2.  
  3. #ifndef __STDIO_H
  4. #define __STDIO_H 1
  5.  
  6. #define EOF (-1)
  7.  
  8. #define BUFSIZ 4096L            /*  buffered i/o, default buf. size */
  9. #define FOPEN_MAX   1024        /*  not used under AmigaOS          */
  10.  
  11. #define _IOFBF 1L               /*  full buffering                  */
  12. #define _IOLBF 2L               /*  line buffer                     */
  13. #define _IONBF 3L               /*  no buffer                       */
  14.  
  15. #define HASBUF 1L               /*  has a buffer                    */
  16. #define NOBUFMEM 2L             /*  no buffering support            */
  17.  
  18. #define SEEK_SET (-1)           /*  fseek relative to beginning     */
  19. #define SEEK_CUR  0             /*                 current position */
  20. #define SEEK_END  1             /*                 end of file      */
  21.  
  22. #define _READ 1                 /*  FILE flags                      */
  23. #define _WRITE 2
  24. #define _UNBUF 4                /*  unbuffered i/o                  */
  25. #define _EOF 8                  /*  end of file                     */
  26. #define _ERR 16                 /*  error                           */
  27. #define _READABLE 32
  28. #define _WRITEABLE 64
  29. #define _LINEBUF 128
  30. #define _NOTMYBUF 256
  31.  
  32. typedef struct _iobuf           /*  FILE structure                  */
  33. {
  34.     char *filehandle;           /*  AmigaDos file handle            */
  35.     char *pointer;              /*  pointer to next character       */
  36.     char *base;                 /*  buffer address                  */
  37.     struct _iobuf *next;        /*  pointer to next structure       */
  38.     struct _iobuf *prev;        /*  previous...                     */
  39.     int count;                  /*  number of characters in buffer  */
  40.     int flags;                  /*  access mode                     */
  41.     int bufsize;                /*  buffer size                     */
  42. } FILE;
  43.  
  44. /*  stdin/out/err must be initialized by _main()  */
  45. extern FILE *stdin, *stdout, *stderr;
  46.  
  47. char *_open(char *,const char *,long);
  48. long _read(char *,void *,long),_write(char *,void *,long),_seek(char *,long,int);
  49. int _close(char *),_fillbuf(FILE *),_putbuf(int,FILE *),_flushbuf(FILE *);
  50.  
  51. #define L_tmpnam        30
  52. #define TMP_MAX FOPEN_MAX
  53.  
  54. #define FILENAME_MAX 107
  55.  
  56. #ifndef __SIZE_T
  57. #define __SIZE_T 1
  58. typedef unsigned long size_t;
  59. #endif
  60.  
  61. #ifndef __FPOS_T
  62. #define __FPOS_T 1
  63. typedef long fpos_t;
  64. #endif
  65.  
  66. #ifndef __STDARG_H
  67. #include <stdarg.h>
  68. #endif
  69.  
  70. #undef NULL
  71. #define NULL ((void*)0)
  72.  
  73. FILE *fopen(const char *,const char *);
  74. FILE *freopen(const char *,const char *,FILE *);
  75. int fflush(FILE *);
  76. int fclose(FILE *);
  77. int rename(const char *,const char *);
  78. int remove(const char *);
  79. FILE *tmpfile(void);
  80. char *tmpnam(char *);
  81. int setvbuf(FILE *,char *,int,size_t);
  82. void setbuf(FILE *,char *);
  83. int fprintf(FILE *, const char *, ...);
  84. int printf(const char *, ...);
  85. int sprintf(char *, const char *,...);
  86. int __v0fprintf(FILE *, const char *);
  87. int __v0printf(const char *);
  88. int __v0sprintf(char *, const char *);
  89. int __v2fprintf(FILE *, const char *,...);
  90. int __v2printf(const char *,...);
  91. int __v2sprintf(char *, const char *,...);
  92. int vprintf(const char *,va_list);
  93. int vfprintf(FILE *,const char *,va_list);
  94. int vsprintf(char *,const char *,va_list);
  95. int fscanf(FILE *, const char *, ...);
  96. int scanf(const char *, ...);
  97. int sscanf(const char *, const char *, ...);
  98. int __v2fscanf(FILE *, const char *,...);
  99. int __v2scanf(const char *,...);
  100. int __v2sscanf(const char *, const char *,...);
  101. int vscanf(const char *,va_list);
  102. int vfscanf(FILE *,const char *,va_list);
  103. int vsscanf(const char *,const char *,va_list);
  104. char *fgets(char *, int, FILE *);
  105. int fputs(const char *, FILE *);
  106. char *gets(char *);
  107. int puts(const char *);
  108. int ungetc(int,FILE *);
  109. size_t fread(void *,size_t,size_t,FILE *);
  110. size_t fwrite(void *,size_t,size_t,FILE *);
  111. int fseek(FILE *,long,int);
  112. void rewind(FILE *);
  113. long ftell(FILE *);
  114. int fgetpos(FILE *,fpos_t *);
  115. int fsetpos(FILE *,const fpos_t *);
  116. void perror(const char *);
  117. int fgetc(FILE *);
  118. int fputc(int,FILE *);
  119. int getchar(void);
  120. int putchar(int);
  121.  
  122. #define __check(arg,type) sizeof((arg)==(type)0)
  123.  
  124. #define getc(p) (__check((p),FILE*),((p)->flags|=_READ),--((FILE*)(p))->count>=0?(unsigned char)*((FILE*)(p))->pointer++:_fillbuf(p))
  125. #define __putc(x,p) (((p)->flags|=_WRITE),((--((FILE*)(p))->count>=0&&((x)!='\n'||!(((FILE*)(p))->flags&_LINEBUF)))?(unsigned char)(*((FILE*)(p))->pointer++=(x)):_putbuf((x),p)))
  126. #define putc(x,f) fputc((x),(f))
  127. #define getchar() getc(stdin)
  128. #define putchar(x) putc((x),stdout)
  129.  
  130. /*  some macros should be replaced by real functions   */
  131. #define feof(p)         (__check((p),FILE*),((FILE*)(p))->flags&_EOF)
  132. #define ferror(p)       (__check((p),FILE*),((FILE*)(p))->flags&_ERR)
  133. /*#define fileno(p)       ((p)->filehandle)   does this make any sense? */
  134. #define clearerr(p)     (__check((p),FILE*),((FILE*)(p))->flags&=~(_ERR|_EOF))
  135.  
  136. #define fsetpos(f,ptr)  fseek((f),*(ptr),SEEK_SET)
  137.  
  138. #pragma printflike printf
  139. #pragma printflike fprintf
  140. #pragma printflike sprintf
  141. #pragma scanflike scanf
  142. #pragma scanflike fscanf
  143. #pragma scanflike sscanf
  144.  
  145. #endif
  146.  
  147.