43 lines · 892 B · C
RawDownload
/*  * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ #include	<u.h>#include	<libc.h>#include	<bio.h> intBflush(Biobufhdr *bp){	int n, c; 	switch(bp->state) {	case Bwactive:		n = bp->bsize+bp->ocount;		if(n == 0)			return 0;		c = write(bp->fid, bp->bbuf, n);		if(n == c) {			bp->offset += n;			bp->ocount = -bp->bsize;			return 0;		}		bp->state = Binactive;		bp->ocount = 0;		break; 	case Bracteof:		bp->state = Bractive; 	case Bractive:		bp->icount = 0;		bp->gbuf = bp->ebuf;		return 0;	}	return Beof;}