| #include "lib9.h" | |
| #include <bio.h> | |
| int | |
| Bflush(Biobuf *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; | |
| } |