17dd7cddfSDavid du Colombier #include <u.h> 27dd7cddfSDavid du Colombier #include <libc.h> 37dd7cddfSDavid du Colombier #include <draw.h> 47dd7cddfSDavid du Colombier 57dd7cddfSDavid du Colombier Font* openfont(Display * d,char * name)67dd7cddfSDavid du Colombieropenfont(Display *d, char *name) 77dd7cddfSDavid du Colombier { 87dd7cddfSDavid du Colombier Font *fnt; 97dd7cddfSDavid du Colombier int fd, i, n; 107dd7cddfSDavid du Colombier char *buf; 11*9a747e4fSDavid du Colombier Dir *dir; 127dd7cddfSDavid du Colombier 137dd7cddfSDavid du Colombier fd = open(name, OREAD); 147dd7cddfSDavid du Colombier if(fd < 0) 157dd7cddfSDavid du Colombier return 0; 167dd7cddfSDavid du Colombier 17*9a747e4fSDavid du Colombier dir = dirfstat(fd); 18*9a747e4fSDavid du Colombier if(dir == nil){ 197dd7cddfSDavid du Colombier Err0: 207dd7cddfSDavid du Colombier close(fd); 217dd7cddfSDavid du Colombier return 0; 227dd7cddfSDavid du Colombier } 23*9a747e4fSDavid du Colombier n = dir->length; 24*9a747e4fSDavid du Colombier free(dir); 257dd7cddfSDavid du Colombier buf = malloc(n+1); 267dd7cddfSDavid du Colombier if(buf == 0) 277dd7cddfSDavid du Colombier goto Err0; 287dd7cddfSDavid du Colombier buf[n] = 0; 297dd7cddfSDavid du Colombier i = read(fd, buf, n); 307dd7cddfSDavid du Colombier close(fd); 317dd7cddfSDavid du Colombier if(i != n){ 327dd7cddfSDavid du Colombier free(buf); 337dd7cddfSDavid du Colombier return 0; 347dd7cddfSDavid du Colombier } 357dd7cddfSDavid du Colombier fnt = buildfont(d, buf, name); 367dd7cddfSDavid du Colombier free(buf); 377dd7cddfSDavid du Colombier return fnt; 387dd7cddfSDavid du Colombier } 39