aboutsummaryrefslogblamecommitdiff
path: root/8.4/stdio.h
blob: 37413a23730b424f78bf2eb65fc791dc66b16aec (plain) (tree)

















































                                                            
#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)