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