9base

revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log | Files | Refs | README | 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 }