13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier #include <bio.h> 43e12c5d1SDavid du Colombier 53e12c5d1SDavid du Colombier int Bflush(Biobufhdr * bp)63e12c5d1SDavid du ColombierBflush(Biobufhdr *bp) 73e12c5d1SDavid du Colombier { 83e12c5d1SDavid du Colombier int n, c; 93e12c5d1SDavid du Colombier 10bd389b36SDavid du Colombier switch(bp->state) { 11bd389b36SDavid du Colombier case Bwactive: 123e12c5d1SDavid du Colombier n = bp->bsize+bp->ocount; 133e12c5d1SDavid du Colombier if(n == 0) 143e12c5d1SDavid du Colombier return 0; 153e12c5d1SDavid du Colombier c = write(bp->fid, bp->bbuf, n); 163e12c5d1SDavid du Colombier if(n == c) { 173e12c5d1SDavid du Colombier bp->offset += n; 183e12c5d1SDavid du Colombier bp->ocount = -bp->bsize; 193e12c5d1SDavid du Colombier return 0; 203e12c5d1SDavid du Colombier } 213e12c5d1SDavid du Colombier bp->state = Binactive; 223e12c5d1SDavid du Colombier bp->ocount = 0; 23bd389b36SDavid du Colombier break; 24bd389b36SDavid du Colombier 25bd389b36SDavid du Colombier case Bracteof: 26bd389b36SDavid du Colombier bp->state = Bractive; 27bd389b36SDavid du Colombier 28bd389b36SDavid du Colombier case Bractive: 29bd389b36SDavid du Colombier bp->icount = 0; 30*219b2ee8SDavid du Colombier bp->gbuf = bp->ebuf; 31bd389b36SDavid du Colombier return 0; 323e12c5d1SDavid du Colombier } 333e12c5d1SDavid du Colombier return Beof; 343e12c5d1SDavid du Colombier } 35