URI:
       tbwrite.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tbwrite.c (553B)
       ---
            1 #include        "lib9.h"
            2 #include        <bio.h>
            3 
            4 long
            5 Bwrite(Biobuf *bp, void *ap, long count)
            6 {
            7         long c;
            8         unsigned char *p;
            9         int i, n, oc;
           10 
           11         p = ap;
           12         c = count;
           13         oc = bp->ocount;
           14 
           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 }