1 #include <u.h> 2 #include <libc.h> 3 #include <draw.h> 4 5 Font* openfont(Display * d,char * name)6openfont(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