Replace the path of subdirs in caches as well

This commit is contained in:
Akira TAGOH 2017-09-23 18:49:55 +09:00
parent 6d3b306cbe
commit cf5acaed96
1 changed files with 21 additions and 1 deletions

View File

@ -370,9 +370,29 @@ FcConfigAddCache (FcConfig *config, FcCache *cache,
{ {
for (i = 0; i < cache->dirs_count; i++) for (i = 0; i < cache->dirs_count; i++)
{ {
FcChar8 *dir = FcOffsetToPtr (dirs, dirs[i], FcChar8); const FcChar8 *dir = FcCacheSubdir (cache, i);
FcChar8 *s = NULL;
struct stat statb;
if (FcStat (dir, &statb) < 0)
{
const FcChar8 *alias;
FcChar8 *d = FcStrDirname (dir);
if ((alias = FcDirCacheFindAliasPath (dir)))
dir = alias;
else if ((alias = FcDirCacheFindAliasPath (d)))
{
FcChar8 *base = FcStrBasename (dir);
dir = s = FcStrBuildFilename (alias, base, NULL);
FcStrFree (base);
}
FcStrFree (d);
}
if (FcConfigAcceptFilename (config, dir)) if (FcConfigAcceptFilename (config, dir))
FcStrSetAddFilename (dirSet, dir); FcStrSetAddFilename (dirSet, dir);
if (s)
FcStrFree (s);
} }
} }
return FcTrue; return FcTrue;