1*0d601874SDavid du Colombier #include <inttypes.h> 28ccd4a63SDavid du Colombier #include <u.h> 38ccd4a63SDavid du Colombier #include <libc.h> 48ccd4a63SDavid du Colombier #include "fmtdef.h" 58ccd4a63SDavid du Colombier 68ccd4a63SDavid du Colombier /* 78ccd4a63SDavid du Colombier * public routine for final flush of a formatting buffer 88ccd4a63SDavid du Colombier * to a file descriptor; returns total char count. 98ccd4a63SDavid du Colombier */ 108ccd4a63SDavid du Colombier int fmtfdflush(Fmt * f)118ccd4a63SDavid du Colombierfmtfdflush(Fmt *f) 128ccd4a63SDavid du Colombier { 13*0d601874SDavid du Colombier if(__fmtFdFlush(f) <= 0) 148ccd4a63SDavid du Colombier return -1; 158ccd4a63SDavid du Colombier return f->nfmt; 168ccd4a63SDavid du Colombier } 178ccd4a63SDavid du Colombier 188ccd4a63SDavid du Colombier /* 198ccd4a63SDavid du Colombier * initialize an output buffer for buffered printing 208ccd4a63SDavid du Colombier */ 218ccd4a63SDavid du Colombier int fmtfdinit(Fmt * f,int fd,char * buf,int size)228ccd4a63SDavid du Colombierfmtfdinit(Fmt *f, int fd, char *buf, int size) 238ccd4a63SDavid du Colombier { 248ccd4a63SDavid du Colombier f->runes = 0; 258ccd4a63SDavid du Colombier f->start = buf; 268ccd4a63SDavid du Colombier f->to = buf; 278ccd4a63SDavid du Colombier f->stop = buf + size; 28*0d601874SDavid du Colombier f->flush = __fmtFdFlush; 29*0d601874SDavid du Colombier f->farg = (void*)(uintptr_t)fd; 308ccd4a63SDavid du Colombier f->nfmt = 0; 318ccd4a63SDavid du Colombier return 0; 328ccd4a63SDavid du Colombier } 33