1*37da2899SCharles.Forsyth /*
2*37da2899SCharles.Forsyth * The authors of this software are Rob Pike and Ken Thompson.
3*37da2899SCharles.Forsyth * Copyright (c) 2002 by Lucent Technologies.
4*37da2899SCharles.Forsyth * Permission to use, copy, modify, and distribute this software for any
5*37da2899SCharles.Forsyth * purpose without fee is hereby granted, provided that this entire notice
6*37da2899SCharles.Forsyth * is included in all copies of any software which is or includes a copy
7*37da2899SCharles.Forsyth * or modification of this software and in all copies of the supporting
8*37da2899SCharles.Forsyth * documentation for such software.
9*37da2899SCharles.Forsyth * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
10*37da2899SCharles.Forsyth * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
11*37da2899SCharles.Forsyth * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
12*37da2899SCharles.Forsyth * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
13*37da2899SCharles.Forsyth */
14*37da2899SCharles.Forsyth #include "lib9.h"
15*37da2899SCharles.Forsyth #include "fmtdef.h"
16*37da2899SCharles.Forsyth
17*37da2899SCharles.Forsyth /*
18*37da2899SCharles.Forsyth * public routine for final flush of a formatting buffer
19*37da2899SCharles.Forsyth * to a file descriptor; returns total char count.
20*37da2899SCharles.Forsyth */
21*37da2899SCharles.Forsyth int
fmtfdflush(Fmt * f)22*37da2899SCharles.Forsyth fmtfdflush(Fmt *f)
23*37da2899SCharles.Forsyth {
24*37da2899SCharles.Forsyth if(_fmtFdFlush(f) <= 0)
25*37da2899SCharles.Forsyth return -1;
26*37da2899SCharles.Forsyth return f->nfmt;
27*37da2899SCharles.Forsyth }
28*37da2899SCharles.Forsyth
29*37da2899SCharles.Forsyth /*
30*37da2899SCharles.Forsyth * initialize an output buffer for buffered printing
31*37da2899SCharles.Forsyth */
32*37da2899SCharles.Forsyth int
fmtfdinit(Fmt * f,int fd,char * buf,int size)33*37da2899SCharles.Forsyth fmtfdinit(Fmt *f, int fd, char *buf, int size)
34*37da2899SCharles.Forsyth {
35*37da2899SCharles.Forsyth f->runes = 0;
36*37da2899SCharles.Forsyth f->start = buf;
37*37da2899SCharles.Forsyth f->to = buf;
38*37da2899SCharles.Forsyth f->stop = buf + size;
39*37da2899SCharles.Forsyth f->flush = _fmtFdFlush;
40*37da2899SCharles.Forsyth f->farg = (void*)fd;
41*37da2899SCharles.Forsyth f->nfmt = 0;
42*37da2899SCharles.Forsyth return 0;
43*37da2899SCharles.Forsyth }
44