]> git.wh0rd.org - fontconfig.git/commitdiff
Have fc-cache remove invalid cache files from cache directories.
authorKeith Packard <keithp@koto.keithp.com>
Thu, 18 Oct 2007 12:05:59 +0000 (05:05 -0700)
committerKeith Packard <keithp@koto.keithp.com>
Thu, 18 Oct 2007 12:07:29 +0000 (05:07 -0700)
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.

fc-cache/fc-cache.c

index dda40c19007e69ca7d37e2bebbb6c011e8c8ba18..b4d49885d4245aacc991a72139af65c1b462a9b0 100644 (file)
@@ -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)
        {