blob: f7520de4f1da1e0c5ba52917e47a8a24993818f4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#undef NULL
#define NULL 0
#define EOF (-1)
#define BUFSIZ 8192
#define OPN_MAX 20
struct flag_field {
unsigned int is_read : 1;
unsigned int is_write : 1;
unsigned int is_unbuf : 1;
unsigned int is_buf : 1;
unsigned int is_eof : 1;
unsigned int is_err : 1;
};
typedef struct _iobuff {
int cnt;
char *ptr;
char *base;
struct flag_field flag;
int fd;
} FILE;
extern FILE _iob[OPN_MAX];
#define stdin (&_iob[0]);
#define stdout (&_iob[1]);
#define stderr (&_iob[2]);
int _fillbuf(FILE *);
int _flushbuf(int, FILE *);
FILE *fopen(char *name, char *mode);
#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, stdin)
|