1*9a747e4fSDavid du Colombier #include <u.h>
2*9a747e4fSDavid du Colombier #include <libc.h>
3*9a747e4fSDavid du Colombier #include "fmtdef.h"
4*9a747e4fSDavid du Colombier
5*9a747e4fSDavid du Colombier /* format the output into f->to and return the number of characters fmted */
6*9a747e4fSDavid du Colombier
7*9a747e4fSDavid du Colombier int
dorfmt(Fmt * f,Rune * fmt)8*9a747e4fSDavid du Colombier dorfmt(Fmt *f, Rune *fmt)
9*9a747e4fSDavid du Colombier {
10*9a747e4fSDavid du Colombier Rune *rt, *rs;
11*9a747e4fSDavid du Colombier int r;
12*9a747e4fSDavid du Colombier char *t, *s;
13*9a747e4fSDavid du Colombier int nfmt;
14*9a747e4fSDavid du Colombier
15*9a747e4fSDavid du Colombier nfmt = f->nfmt;
16*9a747e4fSDavid du Colombier for(;;){
17*9a747e4fSDavid du Colombier if(f->runes){
18*9a747e4fSDavid du Colombier rt = f->to;
19*9a747e4fSDavid du Colombier rs = f->stop;
20*9a747e4fSDavid du Colombier while((r = *fmt++) && r != '%'){
21*9a747e4fSDavid du Colombier FMTRCHAR(f, rt, rs, r);
22*9a747e4fSDavid du Colombier }
23*9a747e4fSDavid du Colombier f->nfmt += rt - (Rune *)f->to;
24*9a747e4fSDavid du Colombier f->to = rt;
25*9a747e4fSDavid du Colombier if(!r)
26*9a747e4fSDavid du Colombier return f->nfmt - nfmt;
27*9a747e4fSDavid du Colombier f->stop = rs;
28*9a747e4fSDavid du Colombier }else{
29*9a747e4fSDavid du Colombier t = f->to;
30*9a747e4fSDavid du Colombier s = f->stop;
31*9a747e4fSDavid du Colombier while((r = *fmt++) && r != '%'){
32*9a747e4fSDavid du Colombier FMTRUNE(f, t, f->stop, r);
33*9a747e4fSDavid du Colombier }
34*9a747e4fSDavid du Colombier f->nfmt += t - (char *)f->to;
35*9a747e4fSDavid du Colombier f->to = t;
36*9a747e4fSDavid du Colombier if(!r)
37*9a747e4fSDavid du Colombier return f->nfmt - nfmt;
38*9a747e4fSDavid du Colombier f->stop = s;
39*9a747e4fSDavid du Colombier }
40*9a747e4fSDavid du Colombier
41*9a747e4fSDavid du Colombier fmt = _fmtdispatch(f, fmt, 1);
42*9a747e4fSDavid du Colombier if(fmt == nil)
43*9a747e4fSDavid du Colombier return -1;
44*9a747e4fSDavid du Colombier }
45*9a747e4fSDavid du Colombier }
46