xref: /inferno-os/libbio/bgetd.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1*37da2899SCharles.Forsyth #include "lib9.h"
2*37da2899SCharles.Forsyth #include <bio.h>
3*37da2899SCharles.Forsyth 
4*37da2899SCharles.Forsyth struct	bgetd
5*37da2899SCharles.Forsyth {
6*37da2899SCharles.Forsyth 	Biobuf*	b;
7*37da2899SCharles.Forsyth 	int		eof;
8*37da2899SCharles.Forsyth };
9*37da2899SCharles.Forsyth 
10*37da2899SCharles.Forsyth static int
Bgetdf(void * vp)11*37da2899SCharles.Forsyth Bgetdf(void *vp)
12*37da2899SCharles.Forsyth {
13*37da2899SCharles.Forsyth 	int c;
14*37da2899SCharles.Forsyth 	struct bgetd *bg = vp;
15*37da2899SCharles.Forsyth 
16*37da2899SCharles.Forsyth 	c = Bgetc(bg->b);
17*37da2899SCharles.Forsyth 	if(c == Beof)
18*37da2899SCharles.Forsyth 		bg->eof = 1;
19*37da2899SCharles.Forsyth 	return c;
20*37da2899SCharles.Forsyth }
21*37da2899SCharles.Forsyth 
22*37da2899SCharles.Forsyth int
Bgetd(Biobuf * bp,double * dp)23*37da2899SCharles.Forsyth Bgetd(Biobuf *bp, double *dp)
24*37da2899SCharles.Forsyth {
25*37da2899SCharles.Forsyth 	double d;
26*37da2899SCharles.Forsyth 	struct bgetd b;
27*37da2899SCharles.Forsyth 
28*37da2899SCharles.Forsyth 	b.b = bp;
29*37da2899SCharles.Forsyth 	b.eof = 0;
30*37da2899SCharles.Forsyth 	d = charstod(Bgetdf, &b);
31*37da2899SCharles.Forsyth 	if(b.eof)
32*37da2899SCharles.Forsyth 		return -1;
33*37da2899SCharles.Forsyth 	Bungetc(bp);
34*37da2899SCharles.Forsyth 	*dp = d;
35*37da2899SCharles.Forsyth 	return 1;
36*37da2899SCharles.Forsyth }
37