bflush.c - 9base - revived minimalist port of Plan 9 userland to Unix
 (HTM) git clone git://git.suckless.org/9base
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       bflush.c (461B)
       ---
            1 #include        "lib9.h"
            2 #include        <bio.h>
            3 
            4 int
            5 Bflush(Biobuf *bp)
            6 {
            7         int n, c;
            8 
            9         switch(bp->state) {
           10         case Bwactive:
           11                 n = bp->bsize+bp->ocount;
           12                 if(n == 0)
           13                         return 0;
           14                 c = write(bp->fid, bp->bbuf, n);
           15                 if(n == c) {
           16                         bp->offset += n;
           17                         bp->ocount = -bp->bsize;
           18                         return 0;
           19                 }
           20                 bp->state = Binactive;
           21                 bp->ocount = 0;
           22                 break;
           23 
           24         case Bracteof:
           25                 bp->state = Bractive;
           26 
           27         case Bractive:
           28                 bp->icount = 0;
           29                 bp->gbuf = bp->ebuf;
           30                 return 0;
           31         }
           32         return Beof;
           33 }