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 /* 6*9a747e4fSDavid du Colombier * public routine for final flush of a formatting buffer 7*9a747e4fSDavid du Colombier * to a file descriptor; returns total char count. 8*9a747e4fSDavid du Colombier */ 9*9a747e4fSDavid du Colombier int fmtfdflush(Fmt * f)10*9a747e4fSDavid du Colombierfmtfdflush(Fmt *f) 11*9a747e4fSDavid du Colombier { 12*9a747e4fSDavid du Colombier if(_fmtFdFlush(f) <= 0) 13*9a747e4fSDavid du Colombier return -1; 14*9a747e4fSDavid du Colombier return f->nfmt; 15*9a747e4fSDavid du Colombier } 16*9a747e4fSDavid du Colombier 17*9a747e4fSDavid du Colombier /* 18*9a747e4fSDavid du Colombier * initialize an output buffer for buffered printing 19*9a747e4fSDavid du Colombier */ 20*9a747e4fSDavid du Colombier int fmtfdinit(Fmt * f,int fd,char * buf,int size)21*9a747e4fSDavid du Colombierfmtfdinit(Fmt *f, int fd, char *buf, int size) 22*9a747e4fSDavid du Colombier { 23*9a747e4fSDavid du Colombier f->runes = 0; 24*9a747e4fSDavid du Colombier f->start = buf; 25*9a747e4fSDavid du Colombier f->to = buf; 26*9a747e4fSDavid du Colombier f->stop = buf + size; 27*9a747e4fSDavid du Colombier f->flush = _fmtFdFlush; 28*9a747e4fSDavid du Colombier f->farg = (void*)fd; 29*9a747e4fSDavid du Colombier f->nfmt = 0; 30*9a747e4fSDavid du Colombier return 0; 31*9a747e4fSDavid du Colombier } 32