X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcxml.c;h=bf6dbfbd14d410eb037a69ef57b14a0c34307947;hb=d0471dd2faca37f7ee5997ad9db8278db0e99206;hp=ff30b7bbdaff398971803913619b757ae24a83df;hpb=bb8057ea77ec89e789afbc6e87b7a16d479d3105;p=fontconfig.git diff --git a/src/fcxml.c b/src/fcxml.c index ff30b7b..bf6dbfb 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -2603,11 +2603,20 @@ FcConfigParseAndLoadDir (FcConfig *config, 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) @@ -2685,6 +2694,8 @@ FcConfigParseAndLoad (FcConfig *config, XML_Parser p; FcChar8 *filename; + const FcChar8 *readFile; + FcChar8 *fullFile; int fd; int len; FcConfigParse parse; @@ -2697,7 +2708,7 @@ FcConfigParseAndLoad (FcConfig *config, void *buf; #endif - filename = FcConfigFilename (name); + filename = FcConfigFilename2 (config, name); if (!filename) goto bail0; @@ -2713,7 +2724,7 @@ FcConfigParseAndLoad (FcConfig *config, goto bail0; } - if (FcFileIsDir (filename)) + if (FcFileIsDir2 (config, filename)) { FcBool ret = FcConfigParseAndLoadDir (config, name, filename, complain); FcStrFree (filename); @@ -2723,7 +2734,14 @@ FcConfigParseAndLoad (FcConfig *config, 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;