Blame


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