| #include "lib9.h" |
| #include <bio.h> |
| |
| static int |
| _Bfmtflush(Fmt *f) |
| { |
| Biobuf *b; |
| |
| b = f->farg; |
| b->ocount = (char*)f->to - (char*)f->stop; |
| if(Bflush(b) < 0) |
| return 0; |
| f->to = b->ebuf+b->ocount; |
| return 1; |
| } |
| |
| int |
| Bfmtinit(Fmt *f, Biobuf *b) |
| { |
| if(b->state != Bwactive) |
| return -1; |
| memset(f, 0, sizeof *f); |
| f->farg = b; |
| f->start = b->bbuf; |
| f->to = b->ebuf+b->ocount; |
| f->stop = b->ebuf; |
| f->flush = _Bfmtflush; |
| return 0; |
| } |
| |
| int |
| Bfmtflush(Fmt *f) |
| { |
| Biobuf *b; |
| |
| b = f->farg; |
| if(f->to == nil) |
| return -1; |
| b->ocount = (char*)f->to - (char*)f->stop; |
| return f->nfmt; |
| } |