1 b2cfc4e2 2003-09-30 devnull #include "lib9.h"
2 b2cfc4e2 2003-09-30 devnull #include <bio.h>
5 b2cfc4e2 2003-09-30 devnull Bwrite(Biobuf *bp, void *ap, long count)
8 b2cfc4e2 2003-09-30 devnull unsigned char *p;
9 b2cfc4e2 2003-09-30 devnull int i, n, oc;
12 b2cfc4e2 2003-09-30 devnull c = count;
13 b2cfc4e2 2003-09-30 devnull oc = bp->ocount;
15 b2cfc4e2 2003-09-30 devnull while(c > 0) {
17 b2cfc4e2 2003-09-30 devnull if(n > c)
19 b2cfc4e2 2003-09-30 devnull if(n == 0) {
20 b2cfc4e2 2003-09-30 devnull if(bp->state != Bwactive)
21 b2cfc4e2 2003-09-30 devnull return Beof;
22 b2cfc4e2 2003-09-30 devnull i = write(bp->fid, bp->bbuf, bp->bsize);
23 b2cfc4e2 2003-09-30 devnull if(i != bp->bsize) {
24 b2cfc4e2 2003-09-30 devnull bp->state = Binactive;
25 b2cfc4e2 2003-09-30 devnull return Beof;
27 b2cfc4e2 2003-09-30 devnull bp->offset += i;
28 b2cfc4e2 2003-09-30 devnull oc = -bp->bsize;
29 b2cfc4e2 2003-09-30 devnull continue;
31 b2cfc4e2 2003-09-30 devnull memmove(bp->ebuf+oc, p, n);
36 b2cfc4e2 2003-09-30 devnull bp->ocount = oc;
37 b2cfc4e2 2003-09-30 devnull return count-c;