Blame


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>
4 76193d7c 2003-09-30 devnull
5 76193d7c 2003-09-30 devnull /*
6 76193d7c 2003-09-30 devnull * Default version: convert to file name
7 76193d7c 2003-09-30 devnull */
8 76193d7c 2003-09-30 devnull
9 76193d7c 2003-09-30 devnull char*
10 76193d7c 2003-09-30 devnull subfontname(char *cfname, char *fname, int maxdepth)
11 76193d7c 2003-09-30 devnull {
12 d4aef6a0 2005-05-12 devnull char *t, *u, *tmp1, *tmp2;
13 76193d7c 2003-09-30 devnull int i;
14 76193d7c 2003-09-30 devnull
15 d4aef6a0 2005-05-12 devnull t = strdup(cfname); /* t is the return string */
16 76193d7c 2003-09-30 devnull if(strcmp(cfname, "*default*") == 0)
17 d4aef6a0 2005-05-12 devnull return t;
18 76193d7c 2003-09-30 devnull if(t[0] != '/'){
19 d4aef6a0 2005-05-12 devnull tmp2 = strdup(fname);
20 76193d7c 2003-09-30 devnull u = utfrrune(tmp2, '/');
21 76193d7c 2003-09-30 devnull if(u)
22 76193d7c 2003-09-30 devnull u[0] = 0;
23 76193d7c 2003-09-30 devnull else
24 76193d7c 2003-09-30 devnull strcpy(tmp2, ".");
25 d4aef6a0 2005-05-12 devnull tmp1 = smprint("%s/%s", tmp2, t);
26 d4aef6a0 2005-05-12 devnull free(tmp2);
27 d4aef6a0 2005-05-12 devnull free(t);
28 76193d7c 2003-09-30 devnull t = tmp1;
29 76193d7c 2003-09-30 devnull }
30 76193d7c 2003-09-30 devnull
31 76193d7c 2003-09-30 devnull if(maxdepth > 8)
32 76193d7c 2003-09-30 devnull maxdepth = 8;
33 76193d7c 2003-09-30 devnull
34 161060a4 2003-10-11 devnull for(i=3; i>=0; i--){
35 161060a4 2003-10-11 devnull if((1<<i) > maxdepth)
36 161060a4 2003-10-11 devnull continue;
37 76193d7c 2003-09-30 devnull /* try i-bit grey */
38 d4aef6a0 2005-05-12 devnull tmp2 = smprint("%s.%d", t, i);
39 d4aef6a0 2005-05-12 devnull if(access(tmp2, AREAD) == 0) {
40 d4aef6a0 2005-05-12 devnull free(t);
41 d4aef6a0 2005-05-12 devnull return tmp2;
42 d4aef6a0 2005-05-12 devnull }
43 76193d7c 2003-09-30 devnull }
44 76193d7c 2003-09-30 devnull
45 76193d7c 2003-09-30 devnull /* try default */
46 76193d7c 2003-09-30 devnull if(access(t, AREAD) == 0)
47 d4aef6a0 2005-05-12 devnull return t;
48 76193d7c 2003-09-30 devnull
49 76193d7c 2003-09-30 devnull return nil;
50 76193d7c 2003-09-30 devnull }