X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcdir.c;h=282dedd200b262b81b3c15e864fb1280b380fb4d;hb=d0471dd2faca37f7ee5997ad9db8278db0e99206;hp=d8b094fbc7eec96a9705117993922002b20883c9;hpb=bb8057ea77ec89e789afbc6e87b7a16d479d3105;p=fontconfig.git diff --git a/src/fcdir.c b/src/fcdir.c index d8b094f..282dedd 100644 --- a/src/fcdir.c +++ b/src/fcdir.c @@ -27,10 +27,16 @@ FcBool FcFileIsDir (const FcChar8 *file) +{ + return FcFileIsDir2 (FcConfigGetCurrent (), file); +} + +FcBool +FcFileIsDir2 (FcConfig *config, const FcChar8 *file) { struct stat statb; - if (FcStat (file, &statb) != 0) + if (FcStat (config, file, &statb) != 0) return FcFalse; return S_ISDIR(statb.st_mode); } @@ -58,7 +64,7 @@ FcFileScanFontConfig (FcFontSet *set, printf ("\tScanning file %s...", file); fflush (stdout); } - font = FcFreeTypeQuery (file, id, blanks, &count); + font = FcFreeTypeQuery2 (config, file, id, blanks, &count); if (FcDebug () & FC_DBG_SCAN) printf ("done\n"); @@ -103,7 +109,7 @@ FcFileScanConfig (FcFontSet *set, const FcChar8 *file, FcConfig *config) { - if (FcFileIsDir (file)) + if (FcFileIsDir2 (config, file)) return FcStrSetAdd (dirs, file); else return FcFileScanFontConfig (set, blanks, file, config); @@ -142,6 +148,8 @@ FcDirScanConfig (FcFontSet *set, FcStrSet *files; FcChar8 *file; FcChar8 *base; + const FcChar8 *scanDir; + FcChar8 *fullDir; FcBool ret = FcTrue; int i; @@ -167,8 +175,15 @@ FcDirScanConfig (FcFontSet *set, if (FcDebug () & FC_DBG_SCAN) printf ("\tScanning dir %s\n", dir); - - 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) { /* Don't complain about missing directories */ @@ -242,7 +257,7 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config) if (FcDebug () & FC_DBG_FONTSET) printf ("cache scan dir %s\n", dir); - if (FcStat (dir, &dir_stat) < 0) + if (FcStat (config, dir, &dir_stat) < 0) goto bail; set = FcFontSetCreate();