1 #include "lib9.h" 2 #include <bio.h> 3 4 int 5 Bputc(Biobuf *bp, int c) 6 { 7 int i, j; 8 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 } 30