1*9a747e4fSDavid du Colombier #include <u.h> 2*9a747e4fSDavid du Colombier #include <libc.h> 3*9a747e4fSDavid du Colombier #include <bio.h> 4*9a747e4fSDavid du Colombier 5*9a747e4fSDavid du Colombier static int fmtBflush(Fmt * f)6*9a747e4fSDavid du ColombierfmtBflush(Fmt *f) 7*9a747e4fSDavid du Colombier { 8*9a747e4fSDavid du Colombier Biobufhdr *bp; 9*9a747e4fSDavid du Colombier 10*9a747e4fSDavid du Colombier bp = f->farg; 11*9a747e4fSDavid du Colombier bp->ocount = (char*)f->to - (char*)f->stop; 12*9a747e4fSDavid du Colombier if(Bflush(bp) < 0) 13*9a747e4fSDavid du Colombier return 0; 14*9a747e4fSDavid du Colombier f->stop = bp->ebuf; 15*9a747e4fSDavid du Colombier f->to = (char*)f->stop + bp->ocount; 16*9a747e4fSDavid du Colombier f->start = f->to; 17*9a747e4fSDavid du Colombier return 1; 18*9a747e4fSDavid du Colombier } 19*9a747e4fSDavid du Colombier 20*9a747e4fSDavid du Colombier int Bvprint(Biobufhdr * bp,char * fmt,va_list arg)21*9a747e4fSDavid du ColombierBvprint(Biobufhdr *bp, char *fmt, va_list arg) 22*9a747e4fSDavid du Colombier { 23*9a747e4fSDavid du Colombier int n; 24*9a747e4fSDavid du Colombier Fmt f; 25*9a747e4fSDavid du Colombier 26*9a747e4fSDavid du Colombier f.runes = 0; 27*9a747e4fSDavid du Colombier f.stop = bp->ebuf; 28*9a747e4fSDavid du Colombier f.start = (char*)f.stop + bp->ocount; 29*9a747e4fSDavid du Colombier f.to = f.start; 30*9a747e4fSDavid du Colombier f.flush = fmtBflush; 31*9a747e4fSDavid du Colombier f.farg = bp; 32*9a747e4fSDavid du Colombier f.nfmt = 0; 33*9a747e4fSDavid du Colombier f.args = arg; 34*9a747e4fSDavid du Colombier n = dofmt(&f, fmt); 35*9a747e4fSDavid du Colombier bp->ocount = (char*)f.to - (char*)f.stop; 36*9a747e4fSDavid du Colombier return n; 37*9a747e4fSDavid du Colombier } 38