]> git.wh0rd.org - fontconfig.git/blobdiff - fc-cache/fc-cache.c
Normalize font dirs by using the form, as given in fonts.conf, and recorded
[fontconfig.git] / fc-cache / fc-cache.c
index d2809ee24f876b76ce8d062d6f5b38937137ed16..6aa53a5a76bc5c2445909f572509f6ca157fffb3 100644 (file)
@@ -183,7 +183,7 @@ scanDirs (FcStrList *list, FcConfig *config, char *program, FcBool force, FcBool
            FcStrSetDestroy (subdirs);
            continue;
        }
-       if (!FcDirScan (set, subdirs, 0, FcConfigGetBlanks (config), dir, force))
+       if (!FcDirScanConfig (set, subdirs, 0, FcConfigGetBlanks (config), dir, force, config))
        {
            fprintf (stderr, "\"%s\": error scanning\n", dir);
            FcFontSetDestroy (set);
@@ -191,23 +191,27 @@ scanDirs (FcStrList *list, FcConfig *config, char *program, FcBool force, FcBool
            ret++;
            continue;
        }
-#if 0 // put this back later after fixing DirCacheValid
-       if (!force && FcDirCacheValid (dir))
+       if (!force && FcDirCacheValid (dir) && FcDirCacheHasCurrentArch (dir))
        {
            if (verbose)
                printf ("skipping, %d fonts, %d dirs\n",
                        set->nfont, nsubdirs(subdirs));
        }
        else
-#endif
        {
            if (verbose)
                printf ("caching, %d fonts, %d dirs\n", 
                        set->nfont, nsubdirs (subdirs));
 
-           if (!FcDirSave (set, dir))
+            if (!FcDirCacheValid (dir))
+                if (!FcDirCacheUnlink (dir))
+                    ret++;
+
+           if (!FcDirSave (set, subdirs, dir))
            {
-               fprintf (stderr, "Can't save cache in \"%s\"\n", dir);
+                if (!ret)
+                    fprintf (stderr, "Caches are currently saved to \"%s\"\n", PKGCACHEDIR);
+               fprintf (stderr, "Can't save cache for \"%s\"\n", dir);
                ret++;
            }
        }
@@ -271,10 +275,7 @@ main (int argc, char **argv)
 
     if (systemOnly)
        FcConfigEnableHome (FcFalse);
-    FcCacheForce (FcTrue);
-    /* need to use FcInitLoadConfig when we use dirs */
-    FcInit ();
-    config = FcConfigGetCurrent ();
+    config = FcInitLoadConfig ();
     if (!config)
     {
        fprintf (stderr, "%s: Can't init font config library\n", argv[0]);