Blob
1 #include "lib9.h"2 #include <bio.h>4 long5 Bwrite(Biobuf *bp, void *ap, long count)6 {7 long c;8 unsigned char *p;9 int i, n, oc;11 p = ap;12 c = count;13 oc = bp->ocount;15 while(c > 0) {16 n = -oc;17 if(n > c)18 n = c;19 if(n == 0) {20 if(bp->state != Bwactive)21 return Beof;22 i = write(bp->fid, bp->bbuf, bp->bsize);23 if(i != bp->bsize) {24 bp->state = Binactive;25 return Beof;26 }27 bp->offset += i;28 oc = -bp->bsize;29 continue;30 }31 memmove(bp->ebuf+oc, p, n);32 oc += n;33 c -= n;34 p += n;35 }36 bp->ocount = oc;37 return count-c;38 }