hbase

heirloom base
git clone git://git.2f30.org/hbase
Log | Files | Refs | README

bvprint.c (619B)


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