xref: /inferno-os/include/bio.h (revision 72335078034e3cd7edcb1739556b405a3e1e9bf8)
137da2899SCharles.Forsyth #pragma	src	"/usr/inferno/libbio"
237da2899SCharles.Forsyth 
337da2899SCharles.Forsyth typedef	struct	Biobuf	Biobuf;
437da2899SCharles.Forsyth 
537da2899SCharles.Forsyth enum
637da2899SCharles.Forsyth {
737da2899SCharles.Forsyth 	Bsize		= 8*1024,
8*72335078SCharles Forsyth 	Bungetsize	= UTFmax+1,		/* space for ungetc */
937da2899SCharles.Forsyth 	Bmagic		= 0x314159,
1037da2899SCharles.Forsyth 	Beof		= -1,
1137da2899SCharles.Forsyth 	Bbad		= -2,
1237da2899SCharles.Forsyth 
1337da2899SCharles.Forsyth 	Binactive	= 0,		/* states */
1437da2899SCharles.Forsyth 	Bractive,
1537da2899SCharles.Forsyth 	Bwactive,
1637da2899SCharles.Forsyth 	Bracteof,
1737da2899SCharles.Forsyth 
1837da2899SCharles.Forsyth 	Bend
1937da2899SCharles.Forsyth };
2037da2899SCharles.Forsyth 
2137da2899SCharles.Forsyth struct	Biobuf
2237da2899SCharles.Forsyth {
2337da2899SCharles.Forsyth 	int	icount;		/* neg num of bytes at eob */
2437da2899SCharles.Forsyth 	int	ocount;		/* num of bytes at bob */
2537da2899SCharles.Forsyth 	int	rdline;		/* num of bytes after rdline */
2637da2899SCharles.Forsyth 	int	runesize;	/* num of bytes of last getrune */
2737da2899SCharles.Forsyth 	int	state;		/* r/w/inactive */
2837da2899SCharles.Forsyth 	int	fid;		/* open file */
2937da2899SCharles.Forsyth 	int	flag;		/* magic if malloc'ed */
30*72335078SCharles Forsyth 	vlong	offset;		/* offset of buffer in file */
3137da2899SCharles.Forsyth 	int	bsize;		/* size of buffer */
3237da2899SCharles.Forsyth 	uchar*	bbuf;		/* pointer to beginning of buffer */
3337da2899SCharles.Forsyth 	uchar*	ebuf;		/* pointer to end of buffer */
3437da2899SCharles.Forsyth 	uchar*	gbuf;		/* pointer to good data in buf */
3537da2899SCharles.Forsyth 	uchar	b[Bungetsize+Bsize];
3637da2899SCharles.Forsyth };
3737da2899SCharles.Forsyth 
38*72335078SCharles Forsyth /* Dregs, redefined as functions for backwards compatibility */
39*72335078SCharles Forsyth #define	BGETC(bp)	Bgetc(bp)
40*72335078SCharles Forsyth #define	BPUTC(bp,c)	Bputc(bp,c)
41*72335078SCharles Forsyth #define	BOFFSET(bp)	Boffset(bp)
42*72335078SCharles Forsyth #define	BLINELEN(bp)	Blinelen(bp)
43*72335078SCharles Forsyth #define	BFILDES(bp)	Bfildes(bp)
4437da2899SCharles.Forsyth 
4537da2899SCharles.Forsyth int	Bbuffered(Biobuf*);
4637da2899SCharles.Forsyth int	Bfildes(Biobuf*);
4737da2899SCharles.Forsyth int	Bflush(Biobuf*);
4837da2899SCharles.Forsyth int	Bgetc(Biobuf*);
4937da2899SCharles.Forsyth int	Bgetd(Biobuf*, double*);
5037da2899SCharles.Forsyth long	Bgetrune(Biobuf*);
5137da2899SCharles.Forsyth int	Binit(Biobuf*, int, int);
5237da2899SCharles.Forsyth int	Binits(Biobuf*, int, int, uchar*, int);
5337da2899SCharles.Forsyth int	Blinelen(Biobuf*);
54*72335078SCharles Forsyth vlong	Boffset(Biobuf*);
5537da2899SCharles.Forsyth Biobuf*	Bopen(char*, int);
5637da2899SCharles.Forsyth int	Bprint(Biobuf*, char*, ...);
57*72335078SCharles Forsyth int	Bvprint(Biobuf*, char*, va_list);
5837da2899SCharles.Forsyth int	Bputc(Biobuf*, int);
5937da2899SCharles.Forsyth int	Bputrune(Biobuf*, long);
6037da2899SCharles.Forsyth void*	Brdline(Biobuf*, int);
61*72335078SCharles Forsyth char*	Brdstr(Biobuf*, int, int);
6237da2899SCharles.Forsyth long	Bread(Biobuf*, void*, long);
63*72335078SCharles Forsyth vlong	Bseek(Biobuf*, vlong, int);
6437da2899SCharles.Forsyth int	Bterm(Biobuf*);
6537da2899SCharles.Forsyth int	Bungetc(Biobuf*);
6637da2899SCharles.Forsyth int	Bungetrune(Biobuf*);
6737da2899SCharles.Forsyth long	Bwrite(Biobuf*, void*, long);
68ce8e0d60Sforsyth 
69ce8e0d60Sforsyth #pragma	varargck	argpos	Bprint	2
70