Don't reject dirs that can't be normalized (fixes lilypond, and is correct
in the context of application font directories.) Use normalized directory name exclusively in FcCacheReadDirs. reviewed by: plam
This commit is contained in:
parent
efb11b36c4
commit
5c3deb2985
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2006-02-07 Patrick Lam <plam@mit.edu>
|
||||
* src/fcdir.c (FcDirScanConfig):
|
||||
|
||||
Don't reject dirs that can't be normalized (fixes lilypond, and
|
||||
is correct in the context of application font directories.)
|
||||
|
||||
2006-02-07 Takashi Iwai <tiwai@suse.de>
|
||||
reviewed by: plam
|
||||
|
||||
* src/fccache.c (FcCacheReadDirs):
|
||||
|
||||
Use normalized directory name exclusively in FcCacheReadDirs.
|
||||
|
||||
2006-02-07 Dirk Mueller <dmueller@suse.com>
|
||||
reviewed by: plam
|
||||
|
||||
|
|
|
@ -842,7 +842,6 @@ FcCacheReadDirs (FcConfig * config, FcGlobalCache * cache,
|
|||
{
|
||||
int ret = 0;
|
||||
FcChar8 *dir;
|
||||
const FcChar8 *name;
|
||||
FcStrSet *subdirs;
|
||||
FcStrList *sublist;
|
||||
struct stat statb;
|
||||
|
@ -858,14 +857,16 @@ FcCacheReadDirs (FcConfig * config, FcGlobalCache * cache,
|
|||
|
||||
/* Skip this directory if already updated
|
||||
* to avoid the looped directories via symlinks
|
||||
* Clearly a dir not in fonts.conf shouldn't be globally cached.
|
||||
*/
|
||||
name = FcConfigNormalizeFontDir (config, dir);
|
||||
if (name)
|
||||
{
|
||||
if (FcStrSetMember (processed_dirs, dir))
|
||||
continue;
|
||||
FcStrSetAdd (processed_dirs, dir);
|
||||
}
|
||||
dir = FcConfigNormalizeFontDir (config, dir);
|
||||
if (!dir)
|
||||
continue;
|
||||
|
||||
if (FcStrSetMember (processed_dirs, dir))
|
||||
continue;
|
||||
if (!FcStrSetAdd (processed_dirs, dir))
|
||||
continue;
|
||||
|
||||
subdirs = FcStrSetCreate ();
|
||||
if (!subdirs)
|
||||
|
@ -907,7 +908,7 @@ FcCacheReadDirs (FcConfig * config, FcGlobalCache * cache,
|
|||
if (FcDirCacheValid (dir) && FcDirCacheRead (set, subdirs, dir, config))
|
||||
{
|
||||
/* if an old entry is found in the global cache, disable it */
|
||||
if ((d = FcGlobalCacheDirFind (cache, (const char *)name)) != NULL)
|
||||
if ((d = FcGlobalCacheDirFind (cache, (const char *)dir)) != NULL)
|
||||
{
|
||||
d->state = FcGCDirDisabled;
|
||||
/* save the updated config later without this entry */
|
||||
|
|
|
@ -120,6 +120,7 @@ FcDirScanConfig (FcFontSet *set,
|
|||
DIR *d;
|
||||
struct dirent *e;
|
||||
FcChar8 *file;
|
||||
const FcChar8 *d_can = 0;
|
||||
FcChar8 *base;
|
||||
FcBool ret = FcTrue;
|
||||
FcFontSet *tmpSet;
|
||||
|
@ -129,11 +130,9 @@ FcDirScanConfig (FcFontSet *set,
|
|||
return FcTrue;
|
||||
|
||||
if (config)
|
||||
dir = FcConfigNormalizeFontDir (config, dir);
|
||||
|
||||
/* refuse to scan a directory that can't be normalized. */
|
||||
if (!dir)
|
||||
return FcFalse;
|
||||
d_can = FcConfigNormalizeFontDir (config, dir);
|
||||
if (d_can)
|
||||
dir = d_can;
|
||||
|
||||
if (!force)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue