xref: /plan9/sys/src/libdraw/openfont.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1 #include <u.h>
2 #include <libc.h>
3 #include <draw.h>
4 
5 Font*
openfont(Display * d,char * name)6 openfont(Display *d, char *name)
7 {
8 	Font *fnt;
9 	int fd, i, n;
10 	char *buf;
11 	Dir *dir;
12 
13 	fd = open(name, OREAD);
14 	if(fd < 0)
15 		return 0;
16 
17 	dir = dirfstat(fd);
18 	if(dir == nil){
19     Err0:
20 		close(fd);
21 		return 0;
22 	}
23 	n = dir->length;
24 	free(dir);
25 	buf = malloc(n+1);
26 	if(buf == 0)
27 		goto Err0;
28 	buf[n] = 0;
29 	i = read(fd, buf, n);
30 	close(fd);
31 	if(i != n){
32 		free(buf);
33 		return 0;
34 	}
35 	fnt = buildfont(d, buf, name);
36 	free(buf);
37 	return fnt;
38 }
39