[Fontconfig] 2.4 branch fc-cache

James Cloos cloos at jhcloos.com
Wed Sep 14 10:06:32 EST 2005

fc-cache isn't creating fonts.cache-2 files in directories w/ only
sub directories and no font files.

In src/fccache.c::FcDirCacheWrite() there is this:

    current_dir_block = FcDirCacheProduce (set, &metadata);

    if (!metadata.count)
        unlink ((char *)cache_file);
        free (cache_file);
        return FcTrue;

well before we get to:

    for (i = 0; i < dirs->size; i++)
        FcCacheWriteString (fd, (char *)dirs->strs[i]);
    FcCacheWriteString (fd, "");

The unlink() call should probably either be conditioned on
metadata.count NOR dirs->size or there should be a nested if
to write out a directories-only cache-2 file if there are no
font files in that dir, yes?

It does seem unlikely that readdir(2) followed by n stat(2) calls
is a win over a list of the sub dirs.

James H. Cloos, Jr. <cloos at jhcloos.com>

More information about the Fontconfig mailing list