DIR *d;
struct dirent *e;
FcBool ret = FcTrue;
+ FcChar8 *fullDir;
+ const FcChar8 *scanDir;
FcChar8 *file;
FcChar8 *base;
FcStrSet *files;
- d = opendir ((char *) dir);
+ fullDir = FcConfigGetRootPlus (config, dir);
+ if (fullDir)
+ scanDir = fullDir;
+ else
+ scanDir = dir;
+ d = opendir ((char *) scanDir);
+ if (fullDir)
+ FcStrFree (fullDir);
if (!d)
{
if (complain)
XML_Parser p;
FcChar8 *filename;
+ const FcChar8 *readFile;
+ FcChar8 *fullFile;
int fd;
int len;
FcConfigParse parse;
void *buf;
#endif
- filename = FcConfigFilename (name);
+ filename = FcConfigFilename2 (config, name);
if (!filename)
goto bail0;
goto bail0;
}
- if (FcFileIsDir (filename))
+ if (FcFileIsDir2 (config, filename))
{
FcBool ret = FcConfigParseAndLoadDir (config, name, filename, complain);
FcStrFree (filename);
if (FcDebug () & FC_DBG_CONFIG)
printf ("\tLoading config file %s\n", filename);
- fd = open ((char *) filename, O_RDONLY);
+ fullFile = FcConfigGetRootPlus (config, filename);
+ if (fullFile)
+ readFile = fullFile;
+ else
+ readFile = filename;
+ fd = open ((char *) readFile, O_RDONLY);
+ if (fullFile)
+ FcStrFree (fullFile);
if (fd == -1) {
FcStrFree (filename);
goto bail0;