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);
}
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");
const FcChar8 *file,
FcConfig *config)
{
- if (FcFileIsDir (file))
+ if (FcFileIsDir2 (config, file))
return FcStrSetAdd (dirs, file);
else
return FcFileScanFontConfig (set, blanks, file, config);
FcStrSet *files;
FcChar8 *file;
FcChar8 *base;
+ const FcChar8 *scanDir;
+ FcChar8 *fullDir;
FcBool ret = FcTrue;
int i;
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 */
FcDirCacheScan (const FcChar8 *dir, FcConfig *config)
{
FcStrSet *dirs;
- FcBool ret = FcTrue;
FcFontSet *set;
FcCache *cache = NULL;
struct stat dir_stat;
if (FcDebug () & FC_DBG_FONTSET)
printf ("cache scan dir %s\n", dir);
- if (FcStat (dir, &dir_stat) < 0)
- {
- if (errno != ENOENT)
- ret = FcFalse;
+ if (FcStat (config, dir, &dir_stat) < 0)
goto bail;
- }
set = FcFontSetCreate();
if (!set)
- {
- ret = FcFalse;
goto bail;
- }
dirs = FcStrSetCreate ();
if (!dirs)
- {
- ret = FcFalse;
goto bail1;
- }
/*
* Scan the dir
*/
if (!FcDirScanConfig (set, dirs, NULL, dir, FcTrue, config))
- {
- ret = FcFalse;
goto bail2;
- }
/*
* Build the cache object
*/
cache = FcDirCacheBuild (set, dir, &dir_stat, dirs);
if (!cache)
- {
- ret = FcFalse;
goto bail2;
- }
/*
* Write out the cache file, ignoring any troubles