From: Keith Packard Date: Thu, 18 Oct 2007 12:05:59 +0000 (-0700) Subject: Have fc-cache remove invalid cache files from cache directories. X-Git-Tag: 2.4.91~28 X-Git-Url: https://git.wh0rd.org/?p=fontconfig.git;a=commitdiff_plain;h=2a3e3c442de4c675e28e754dea0fe2f7f0686ade 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. --- diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c index dda40c1..b4d4988 100644 --- a/fc-cache/fc-cache.c +++ b/fc-cache/fc-cache.c @@ -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) {