Blob


1 #include "lib9.h"
2 #include <bio.h>
4 int
5 Bputc(Biobuf *bp, int c)
6 {
7 int i, j;
9 loop:
10 i = bp->ocount;
11 j = i+1;
12 if(i != 0) {
13 bp->ocount = j;
14 bp->ebuf[i] = c;
15 return 0;
16 }
17 if(bp->state != Bwactive)
18 return Beof;
19 j = write(bp->fid, bp->bbuf, bp->bsize);
20 if(j == bp->bsize) {
21 bp->ocount = -bp->bsize;
22 bp->offset += j;
23 goto loop;
24 }
25 fprint(2, "Bputc: write error\n");
26 bp->state = Binactive;
27 bp->ocount = 0;
28 return Beof;
29 }