for (i = 0; base[i]; i++) { if (!ISALNUM(base[i]) + && base[i] != '+' && base[i] != '-' && base[i] != '_' && base[i] != '.' This code postdates me, but why bother checking only for specific "allowed" characters at all? We should accept anything at the kpathsea level (TeX is another problem). Oh well, whatever works.