1 #pragma src "/sys/src/libbio"
4 typedef struct Biobuf Biobuf;
5 typedef struct Biobufhdr Biobufhdr;
10 Bungetsize = 4, /* space for ungetc */
15 Binactive = 0, /* states */
23 int icount; /* neg num of bytes at eob */
24 int ocount; /* num of bytes at bob */
25 int rdline; /* num of bytes after rdline */
26 int runesize; /* num of bytes of last getrune */
27 int state; /* r/w/inactive */
28 int fid; /* open file */
29 int flag; /* magic if malloc'ed */
30 vlong offset; /* offset of buffer in file */
31 int bsize; /* size of buffer */
32 uchar* bbuf; /* pointer to beginning of buffer */
33 uchar* ebuf; /* pointer to end of buffer */
34 uchar* gbuf; /* pointer to good data in buf */
35 void (*errorf)(char *); /* called on error if not nil */
41 uchar b[Bungetsize+Bsize];
44 /* Dregs, redefined as functions for backwards compatibility */
45 #define BGETC(bp) Bgetc(bp)
46 #define BPUTC(bp,c) Bputc(bp,c)
47 #define BOFFSET(bp) Boffset(bp)
48 #define BLINELEN(bp) Blinelen(bp)
49 #define BFILDES(bp) Bfildes(bp)
51 int Bbuffered(Biobufhdr*);
52 int Bfildes(Biobufhdr*);
53 int Bflush(Biobufhdr*);
54 int Bgetc(Biobufhdr*);
55 int Bgetd(Biobufhdr*, double*);
56 long Bgetrune(Biobufhdr*);
57 int Binit(Biobuf*, int, int);
58 int Binits(Biobufhdr*, int, int, uchar*, int);
59 int Blinelen(Biobufhdr*);
60 vlong Boffset(Biobufhdr*);
61 Biobuf* Bopen(char*, int);
62 int Bprint(Biobufhdr*, char*, ...);
63 int Bvprint(Biobufhdr*, char*, va_list);
64 int Bputc(Biobufhdr*, int);
65 int Bputrune(Biobufhdr*, long);
66 void* Brdline(Biobufhdr*, int);
67 char* Brdstr(Biobufhdr*, int, int);
68 long Bread(Biobufhdr*, void*, long);
69 long Breadn(Biobufhdr*, void*, long);
70 vlong Bseek(Biobufhdr*, vlong, int);
71 int Bterm(Biobufhdr*);
72 int Bungetc(Biobufhdr*);
73 int Bungetrune(Biobufhdr*);
74 long Bwrite(Biobufhdr*, void*, long);
75 void Blethal(Biobufhdr*, void(*)(char*));
76 void Berror(Biobufhdr*, char*, ...);
78 #pragma varargck argpos Bprint 2