#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, *tmp2, *base;
	int i, scale;
	
	scale = parsefontscale(fname, &base);

	t = strdup(cfname);  /* t is the return string */
	if(strcmp(cfname, "*default*") == 0)
		return t;
	if(t[0] != '/'){
		tmp2 = strdup(base);
		u = utfrrune(tmp2, '/');
		if(u)
			u[0] = 0;
		else
			strcpy(tmp2, ".");
		tmp1 = smprint("%s/%s", tmp2, t);
		free(tmp2);
		free(t);
		t = tmp1;
	}

	if(maxdepth > 8)
		maxdepth = 8;

	for(i=3; i>=0; i--){
		if((1<<i) > maxdepth)
			continue;
		/* try i-bit grey */
		tmp2 = smprint("%s.%d", t, i);
		if(access(tmp2, AREAD) == 0) {
			free(t);
			if(scale > 1) {
				t = smprint("%d*%s", scale, tmp2);
				free(tmp2);
				tmp2 = t;
			}
			return tmp2;
		}
	}

	/* try default */
	if(strncmp(t, "/mnt/font/", 10) == 0 || access(t, AREAD) == 0) {
		if(scale > 1) {
			tmp2 = smprint("%d*%s", scale, t);
			free(t);
			t = tmp2;
		}
		return t;
	}

	return nil;
}
