diff options
Diffstat (limited to '8.4/stdio.h')
-rw-r--r-- | 8.4/stdio.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/8.4/stdio.h b/8.4/stdio.h new file mode 100644 index 0000000..37413a2 --- /dev/null +++ b/8.4/stdio.h @@ -0,0 +1,50 @@ +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <stddef.h> + +#define EOF (-1) +#define BUFSIZ 8192 +#define OPN_MAX 20 + +typedef struct { + int cnt; + char *ptr; + char *base; + int flag; + int fd; +} FILE; + +extern FILE _iob[OPN_MAX]; + +#define stdin (_iob+0) +#define stdout (_iob+1) +#define stderr (_iob+2) + +enum flags { + _READ = 1 << 0, + _WRITE = 1 << 2, + _UNBUF = 1 << 3, + _EOF = 1 << 4, + _ERR = 1 << 5 +}; + +int _fillbuf(FILE *); +int _flushbuf(int, FILE *); +FILE *fopen(char *name, char *mode); +int fflush(FILE *fp); +int fseek(FILE *fp, ssize_t os, int whence); +int fclose(FILE *fp); +int puts(const char *); + +#define feof(p) ((p)->flag & _EOF) +#define ferror(p) ((p)->flag & _ERR) +#define fileno(p) ((p)->fd) + +#define getc(p) ((--(p)->cnt >= 0) \ + ? (unsigned char) *(p)->ptr++ : _fillbuf(p)) +#define putc(x, p) ((--(p)->cnt >= 0) \ + ? *(p)->ptr++ = (x) : _flushbuf(x, p)) + +#define getchar() getc(stdin) +#define putchar(x) putc((x), stdout) |