/*
* Edit pattern with user-defined rules
*/
- if (font && config && !FcConfigSubstituteWithPat (config, font, NULL, FcMatchScan))
+ if (font && config && !FcConfigSubstitute (config, font, FcMatchScan))
{
FcPatternDestroy (font);
font = NULL;
/*
* Add the font
*/
- if (font && (!config || FcConfigAcceptFont (config, font)))
+ if (font)
{
if (FcDebug() & FC_DBG_SCANV)
{
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 (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;
printf ("cache scan dir %s\n", dir);
if (FcStat (dir, &dir_stat) < 0)
- {
- if (errno != ENOENT)
- ret = FcFalse;
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
{
FcCache *cache = NULL;
- if (config && !FcConfigAcceptFilename (config, dir))
- return NULL;
-
/* Try to use existing cache file */
if (!force)
cache = FcDirCacheLoad (dir, config, NULL);