X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=fc-cache%2Ffc-cache.c;h=acaa8ba11012f21fb8563082a066551cfb3551aa;hb=0334e5a294dd6a36c94936f6c9c709e86773cf64;hp=f20d3a7c07203903d0aa5336b27450c075252860;hpb=822ec78c54a24a0f1589154ac2d4906b02b111ef;p=fontconfig.git diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c index f20d3a7..acaa8ba 100644 --- a/fc-cache/fc-cache.c +++ b/fc-cache/fc-cache.c @@ -22,6 +22,8 @@ * PERFORMANCE OF THIS SOFTWARE. */ +#include "../fc-arch/fcarch.h" + #ifdef HAVE_CONFIG_H #include #else @@ -31,7 +33,7 @@ #define HAVE_GETOPT 1 #endif -#include "fcint.h" +#include #include #include #include @@ -40,6 +42,7 @@ #include #include #include +#include #if defined (_WIN32) #define STRICT @@ -112,33 +115,17 @@ usage (char *program) static FcStrSet *processed_dirs; -static int -nsubdirs (FcStrSet *set) -{ - FcStrList *list; - int n = 0; - - list = FcStrListCreate (set); - if (!list) - return 0; - while (FcStrListNext (list)) - n++; - FcStrListDone (list); - return n; -} - static int scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose) { - int ret = 0; - const FcChar8 *dir; - FcFontSet *set; - FcStrSet *subdirs; - FcStrList *sublist; - FcCache *cache; - struct stat statb; - FcBool was_valid; - int i; + int ret = 0; + const FcChar8 *dir; + FcStrSet *subdirs; + FcStrList *sublist; + FcCache *cache; + struct stat statb; + FcBool was_valid; + int i; /* * Now scan all of the directories into separate databases @@ -223,19 +210,17 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, } } - set = FcCacheSet (cache); - if (was_valid) { if (verbose) printf ("skipping, %d fonts, %d dirs\n", - set->nfont, cache->dirs_count); + FcCacheNumFont (cache), FcCacheNumSubdir (cache)); } else { if (verbose) printf ("caching, %d fonts, %d dirs\n", - set->nfont, cache->dirs_count); + FcCacheNumFont (cache), FcCacheNumSubdir (cache)); if (!FcDirCacheValid (dir)) { @@ -253,7 +238,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcDirCacheUnload (cache); continue; } - for (i = 0; i < cache->dirs_count; i++) + for (i = 0; i < FcCacheNumSubdir (cache); i++) FcStrSetAdd (subdirs, FcCacheSubdir (cache, i)); FcDirCacheUnload (cache); @@ -264,7 +249,6 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, { fprintf (stderr, "%s: Can't create subdir list\n", dir); ret++; - FcDirCacheUnload (cache); continue; } FcStrSetAdd (processed_dirs, dir); @@ -279,14 +263,14 @@ cleanCacheDirectory (FcConfig *config, FcChar8 *dir, FcBool verbose) { DIR *d; struct dirent *ent; - char *dir_base; + FcChar8 *dir_base; FcBool ret = FcTrue; FcBool remove; FcCache *cache; struct stat file_stat; struct stat target_stat; - dir_base = FcStrPlus (dir, "/"); + dir_base = FcStrPlus (dir, (FcChar8 *) "/"); if (!dir_base) { fprintf (stderr, "%s: out of memory\n", dir); @@ -301,21 +285,27 @@ cleanCacheDirectory (FcConfig *config, FcChar8 *dir, FcBool verbose) } if (verbose) printf ("%s: cleaning cache directory\n", dir); - d = opendir (dir); + d = opendir ((char *) dir); if (!d) { - perror (dir); + perror ((char *) dir); FcStrFree (dir_base); return FcFalse; } while ((ent = readdir (d))) { FcChar8 *file_name; - FcChar8 *target_dir; + const FcChar8 *target_dir; if (ent->d_name[0] == '.') continue; - file_name = FcStrPlus (dir_base, ent->d_name); + /* skip cache files for different architectures and */ + /* files which are not cache files at all */ + if (strlen(ent->d_name) != 32 + strlen ("-" FC_ARCHITECTURE FC_CACHE_SUFFIX) || + strcmp(ent->d_name + 32, "-" FC_ARCHITECTURE FC_CACHE_SUFFIX)) + continue; + + file_name = FcStrPlus (dir_base, (FcChar8 *) ent->d_name); if (!file_name) { fprintf (stderr, "%s: allocation failure\n", dir); @@ -332,7 +322,7 @@ cleanCacheDirectory (FcConfig *config, FcChar8 *dir, FcBool verbose) } target_dir = FcCacheDir (cache); remove = FcFalse; - if (stat (target_dir, &target_stat) < 0) + if (stat ((char *) target_dir, &target_stat) < 0) { if (verbose) printf ("%s: %s: missing directory: %s \n", @@ -348,9 +338,9 @@ cleanCacheDirectory (FcConfig *config, FcChar8 *dir, FcBool verbose) } if (remove) { - if (unlink (file_name) < 0) + if (unlink ((char *) file_name) < 0) { - perror (file_name); + perror ((char *) file_name); ret = FcFalse; } }