xref: /plan9/sys/src/cmd/unix/drawterm/libc/fmtfd.c (revision 2282df4ee19682a10ae95200202320ff2912f104)
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 Colombier fmtfdflush(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 Colombier fmtfdinit(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