1 76193d7c 2003-09-30 devnull #include <u.h>
2 76193d7c 2003-09-30 devnull #include <libc.h>
3 76193d7c 2003-09-30 devnull #include <draw.h>
6 76193d7c 2003-09-30 devnull * Default version: treat as file name
9 9b4a2324 2009-07-09 rsc int _fontpipe(char*);
12 76193d7c 2003-09-30 devnull _getsubfont(Display *d, char *name)
15 76193d7c 2003-09-30 devnull Subfont *f;
17 76193d7c 2003-09-30 devnull fd = open(name, OREAD);
18 9b4a2324 2009-07-09 rsc if(fd < 0 && strncmp(name, "/mnt/font/", 10) == 0)
19 9b4a2324 2009-07-09 rsc fd = _fontpipe(name+10);
21 76193d7c 2003-09-30 devnull if(fd < 0){
22 76193d7c 2003-09-30 devnull fprint(2, "getsubfont: can't open %s: %r\n", name);
23 76193d7c 2003-09-30 devnull return 0;
26 76193d7c 2003-09-30 devnull * unlock display so i/o happens with display released, unless
27 76193d7c 2003-09-30 devnull * user is doing his own locking, in which case this could break things.
28 76193d7c 2003-09-30 devnull * _getsubfont is called only from string.c and stringwidth.c,
29 76193d7c 2003-09-30 devnull * which are known to be safe to have this done.
31 4e206880 2004-04-25 devnull if(d && d->locking == 0)
32 76193d7c 2003-09-30 devnull unlockdisplay(d);
33 4e206880 2004-04-25 devnull f = readsubfont(d, name, fd, d && d->locking==0);
34 4e206880 2004-04-25 devnull if(d && d->locking == 0)
35 76193d7c 2003-09-30 devnull lockdisplay(d);
36 76193d7c 2003-09-30 devnull if(f == 0)
37 76193d7c 2003-09-30 devnull fprint(2, "getsubfont: can't read %s: %r\n", name);
38 76193d7c 2003-09-30 devnull close(fd);
39 76193d7c 2003-09-30 devnull return f;