xref: /plan9/sys/src/cmd/unix/drawterm/libc/fmtfd.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier #include <u.h>
2*8ccd4a63SDavid du Colombier #include <libc.h>
3*8ccd4a63SDavid du Colombier #include "fmtdef.h"
4*8ccd4a63SDavid du Colombier 
5*8ccd4a63SDavid du Colombier /*
6*8ccd4a63SDavid du Colombier  * public routine for final flush of a formatting buffer
7*8ccd4a63SDavid du Colombier  * to a file descriptor; returns total char count.
8*8ccd4a63SDavid du Colombier  */
9*8ccd4a63SDavid du Colombier int
10*8ccd4a63SDavid du Colombier fmtfdflush(Fmt *f)
11*8ccd4a63SDavid du Colombier {
12*8ccd4a63SDavid du Colombier 	if(_fmtFdFlush(f) <= 0)
13*8ccd4a63SDavid du Colombier 		return -1;
14*8ccd4a63SDavid du Colombier 	return f->nfmt;
15*8ccd4a63SDavid du Colombier }
16*8ccd4a63SDavid du Colombier 
17*8ccd4a63SDavid du Colombier /*
18*8ccd4a63SDavid du Colombier  * initialize an output buffer for buffered printing
19*8ccd4a63SDavid du Colombier  */
20*8ccd4a63SDavid du Colombier int
21*8ccd4a63SDavid du Colombier fmtfdinit(Fmt *f, int fd, char *buf, int size)
22*8ccd4a63SDavid du Colombier {
23*8ccd4a63SDavid du Colombier 	f->runes = 0;
24*8ccd4a63SDavid du Colombier 	f->start = buf;
25*8ccd4a63SDavid du Colombier 	f->to = buf;
26*8ccd4a63SDavid du Colombier 	f->stop = buf + size;
27*8ccd4a63SDavid du Colombier 	f->flush = _fmtFdFlush;
28*8ccd4a63SDavid du Colombier 	f->farg = (void*)fd;
29*8ccd4a63SDavid du Colombier 	f->nfmt = 0;
30*8ccd4a63SDavid du Colombier 	return 0;
31*8ccd4a63SDavid du Colombier }
32