xref: /plan9/sys/include/bio.h (revision e94a8e9b44de11e62dfd4566245554f8bf8e0295)
1219b2ee8SDavid du Colombier #pragma	src	"/sys/src/libbio"
23e12c5d1SDavid du Colombier #pragma	lib	"libbio.a"
33e12c5d1SDavid du Colombier 
43e12c5d1SDavid du Colombier typedef	struct	Biobuf	Biobuf;
53e12c5d1SDavid du Colombier typedef	struct	Biobufhdr	Biobufhdr;
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier enum
83e12c5d1SDavid du Colombier {
93e12c5d1SDavid du Colombier 	Bsize		= 8*1024,
10*e94a8e9bSDavid du Colombier 	Bungetsize	= UTFmax+1,		/* space for ungetc */
113e12c5d1SDavid du Colombier 	Bmagic		= 0x314159,
123e12c5d1SDavid du Colombier 	Beof		= -1,
133e12c5d1SDavid du Colombier 	Bbad		= -2,
143e12c5d1SDavid du Colombier 
153e12c5d1SDavid du Colombier 	Binactive	= 0,		/* states */
163e12c5d1SDavid du Colombier 	Bractive,
173e12c5d1SDavid du Colombier 	Bwactive,
183e12c5d1SDavid du Colombier 	Bracteof,
193e12c5d1SDavid du Colombier };
203e12c5d1SDavid du Colombier 
213e12c5d1SDavid du Colombier struct	Biobufhdr
223e12c5d1SDavid du Colombier {
233e12c5d1SDavid du Colombier 	int	icount;		/* neg num of bytes at eob */
243e12c5d1SDavid du Colombier 	int	ocount;		/* num of bytes at bob */
253e12c5d1SDavid du Colombier 	int	rdline;		/* num of bytes after rdline */
263e12c5d1SDavid du Colombier 	int	runesize;	/* num of bytes of last getrune */
273e12c5d1SDavid du Colombier 	int	state;		/* r/w/inactive */
283e12c5d1SDavid du Colombier 	int	fid;		/* open file */
293e12c5d1SDavid du Colombier 	int	flag;		/* magic if malloc'ed */
307dd7cddfSDavid du Colombier 	vlong	offset;		/* offset of buffer in file */
313e12c5d1SDavid du Colombier 	int	bsize;		/* size of buffer */
323e12c5d1SDavid du Colombier 	uchar*	bbuf;		/* pointer to beginning of buffer */
333e12c5d1SDavid du Colombier 	uchar*	ebuf;		/* pointer to end of buffer */
34219b2ee8SDavid du Colombier 	uchar*	gbuf;		/* pointer to good data in buf */
353e12c5d1SDavid du Colombier };
363e12c5d1SDavid du Colombier 
373e12c5d1SDavid du Colombier struct	Biobuf
383e12c5d1SDavid du Colombier {
393e12c5d1SDavid du Colombier 	Biobufhdr;
403e12c5d1SDavid du Colombier 	uchar	b[Bungetsize+Bsize];
413e12c5d1SDavid du Colombier };
423e12c5d1SDavid du Colombier 
437dd7cddfSDavid du Colombier /* Dregs, redefined as functions for backwards compatibility */
447dd7cddfSDavid du Colombier #define	BGETC(bp)	Bgetc(bp)
457dd7cddfSDavid du Colombier #define	BPUTC(bp,c)	Bputc(bp,c)
467dd7cddfSDavid du Colombier #define	BOFFSET(bp)	Boffset(bp)
477dd7cddfSDavid du Colombier #define	BLINELEN(bp)	Blinelen(bp)
487dd7cddfSDavid du Colombier #define	BFILDES(bp)	Bfildes(bp)
493e12c5d1SDavid du Colombier 
503e12c5d1SDavid du Colombier int	Bbuffered(Biobufhdr*);
51219b2ee8SDavid du Colombier int	Bfildes(Biobufhdr*);
523e12c5d1SDavid du Colombier int	Bflush(Biobufhdr*);
533e12c5d1SDavid du Colombier int	Bgetc(Biobufhdr*);
543e12c5d1SDavid du Colombier int	Bgetd(Biobufhdr*, double*);
553e12c5d1SDavid du Colombier long	Bgetrune(Biobufhdr*);
563e12c5d1SDavid du Colombier int	Binit(Biobuf*, int, int);
573e12c5d1SDavid du Colombier int	Binits(Biobufhdr*, int, int, uchar*, int);
583e12c5d1SDavid du Colombier int	Blinelen(Biobufhdr*);
597dd7cddfSDavid du Colombier vlong	Boffset(Biobufhdr*);
603e12c5d1SDavid du Colombier Biobuf*	Bopen(char*, int);
613e12c5d1SDavid du Colombier int	Bprint(Biobufhdr*, char*, ...);
629a747e4fSDavid du Colombier int	Bvprint(Biobufhdr*, char*, va_list);
633e12c5d1SDavid du Colombier int	Bputc(Biobufhdr*, int);
643e12c5d1SDavid du Colombier int	Bputrune(Biobufhdr*, long);
653e12c5d1SDavid du Colombier void*	Brdline(Biobufhdr*, int);
669a747e4fSDavid du Colombier char*	Brdstr(Biobufhdr*, int, int);
673e12c5d1SDavid du Colombier long	Bread(Biobufhdr*, void*, long);
687dd7cddfSDavid du Colombier vlong	Bseek(Biobufhdr*, vlong, int);
69219b2ee8SDavid du Colombier int	Bterm(Biobufhdr*);
703e12c5d1SDavid du Colombier int	Bungetc(Biobufhdr*);
713e12c5d1SDavid du Colombier int	Bungetrune(Biobufhdr*);
723e12c5d1SDavid du Colombier long	Bwrite(Biobufhdr*, void*, long);
737dd7cddfSDavid du Colombier 
747dd7cddfSDavid du Colombier #pragma	varargck	argpos	Bprint	2
75