| #include <u.h> |
| #include <libc.h> |
| #include <draw.h> |
| |
| /* |
| * Default version: convert to file name |
| */ |
| |
| char* |
| subfontname(char *cfname, char *fname, int maxdepth) |
| { |
| char *t, *u, tmp1[64], tmp2[64]; |
| int i; |
| |
| if(strcmp(cfname, "*default*") == 0) |
| return strdup(cfname); |
| t = cfname; |
| if(t[0] != '/'){ |
| snprint(tmp2, sizeof tmp2, "%s", fname); |
| u = utfrrune(tmp2, '/'); |
| if(u) |
| u[0] = 0; |
| else |
| strcpy(tmp2, "."); |
| snprint(tmp1, sizeof tmp1, "%s/%s", tmp2, t); |
| t = tmp1; |
| } |
| |
| if(maxdepth > 8) |
| maxdepth = 8; |
| |
| for(i=3; i>=0; i--){ |
| if((1<<i) > maxdepth) |
| continue; |
| /* try i-bit grey */ |
| snprint(tmp2, sizeof tmp2, "%s.%d", t, i); |
| if(access(tmp2, AREAD) == 0) |
| return strdup(tmp2); |
| } |
| |
| /* try default */ |
| if(access(t, AREAD) == 0) |
| return strdup(t); |
| |
| return nil; |
| } |