Commit 2a3e3c44 authored by Keith Packard's avatar Keith Packard
Browse files

Have fc-cache remove invalid cache files from cache directories.

Old cache file versions, or corrupted cache files should be removed when
cleaning cache directories with fc-cache. This only affects filenames which
match the fontconfig cache file format, so other files will be left alone.
parent 23848903
......@@ -301,29 +301,31 @@ cleanCacheDirectory (FcConfig *config, FcChar8 *dir, FcBool verbose)
ret = FcFalse;
break;
}
remove = FcFalse;
cache = FcDirCacheLoadFile (file_name, &file_stat);
if (!cache)
{
fprintf (stderr, "%s: invalid cache file: %s\n", dir, ent->d_name);
FcStrFree (file_name);
ret = FcFalse;
continue;
}
target_dir = FcCacheDir (cache);
remove = FcFalse;
if (stat ((char *) target_dir, &target_stat) < 0)
{
if (verbose)
printf ("%s: %s: missing directory: %s \n",
dir, ent->d_name, target_dir);
printf ("%s: invalid cache file: %s\n", dir, ent->d_name);
remove = FcTrue;
}
else if (target_stat.st_mtime > file_stat.st_mtime)
else
{
if (verbose)
printf ("%s: %s: cache outdated: %s\n",
dir, ent->d_name, target_dir);
remove = FcTrue;
target_dir = FcCacheDir (cache);
if (stat ((char *) target_dir, &target_stat) < 0)
{
if (verbose)
printf ("%s: %s: missing directory: %s \n",
dir, ent->d_name, target_dir);
remove = FcTrue;
}
else if (target_stat.st_mtime > file_stat.st_mtime)
{
if (verbose)
printf ("%s: %s: cache outdated: %s\n",
dir, ent->d_name, target_dir);
remove = FcTrue;
}
}
if (remove)
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment