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