Blame


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