X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffccfg.c;h=18a74e7e82ef7e1776d099452f0bd0aa0fc6b358;hb=1d93c1752f03b833603ea31c2cfbd16868c44922;hp=d9502f0d341f691deaa5b3c1825f6924bb1908f5;hpb=17389539a046f7231447d531ef7f3d131c1d7515;p=fontconfig.git diff --git a/src/fccfg.c b/src/fccfg.c index d9502f0..18a74e7 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -138,23 +138,10 @@ FcConfigNewestFile (FcStrSet *files) return newest; } -FcFileTime -FcConfigModifiedTime (FcConfig *config) -{ - if (!config) - { - FcFileTime v = { 0, FcFalse }; - config = FcConfigGetCurrent (); - if (!config) - return v; - } - return FcConfigNewestFile (config->configFiles); -} - FcBool FcConfigUptoDate (FcConfig *config) { - FcFileTime config_time, font_time; + FcFileTime config_time, config_dir_time, font_time; time_t now = time(0); if (!config) { @@ -163,8 +150,10 @@ FcConfigUptoDate (FcConfig *config) return FcFalse; } config_time = FcConfigNewestFile (config->configFiles); + config_dir_time = FcConfigNewestFile (config->configDirs); font_time = FcConfigNewestFile (config->fontDirs); if ((config_time.set && config_time.time - config->rescanTime > 0) || + (config_dir_time.set && (config_dir_time.time - config->rescanTime) > 0) || (font_time.set && (font_time.time - config->rescanTime) > 0)) { return FcFalse; @@ -227,7 +216,8 @@ FcConfigDestroy (FcConfig *config) */ FcBool -FcConfigAddCache (FcConfig *config, FcCache *cache) +FcConfigAddCache (FcConfig *config, FcCache *cache, + FcSetName set, FcStrSet *dirSet) { FcFontSet *fs; intptr_t *dirs; @@ -263,7 +253,7 @@ FcConfigAddCache (FcConfig *config, FcCache *cache) continue; nref++; - FcFontSetAdd (config->fonts[FcSetSystem], font); + FcFontSetAdd (config->fonts[set], font); } FcDirCacheReference (cache, nref); } @@ -278,12 +268,37 @@ FcConfigAddCache (FcConfig *config, FcCache *cache) { FcChar8 *dir = FcOffsetToPtr (dirs, dirs[i], FcChar8); if (FcConfigAcceptFilename (config, dir)) - FcConfigAddFontDir (config, dir); + FcStrSetAddFilename (dirSet, dir); } } return FcTrue; } +static FcBool +FcConfigAddDirList (FcConfig *config, FcSetName set, FcStrSet *dirSet) +{ + FcStrList *dirlist; + FcChar8 *dir; + FcCache *cache; + + dirlist = FcStrListCreate (dirSet); + if (!dirlist) + return FcFalse; + + while ((dir = FcStrListNext (dirlist))) + { + if (FcDebug () & FC_DBG_FONTSET) + printf ("adding fonts from%s\n", dir); + cache = FcDirCacheRead (dir, FcFalse, config); + if (!cache) + continue; + FcConfigAddCache (config, cache, set, dirSet); + FcDirCacheUnload (cache); + } + FcStrListDone (dirlist); + return FcTrue; +} + /* * Scan the current list of directories in the configuration * and build the set of available fonts. @@ -293,9 +308,6 @@ FcBool FcConfigBuildFonts (FcConfig *config) { FcFontSet *fonts; - FcStrList *dirlist; - FcChar8 *dir; - FcCache *cache; if (!config) { @@ -306,33 +318,15 @@ FcConfigBuildFonts (FcConfig *config) fonts = FcFontSetCreate (); if (!fonts) - goto bail; + return FcFalse; FcConfigSetFonts (config, fonts, FcSetSystem); - dirlist = FcStrListCreate (config->fontDirs); - if (!dirlist) - goto bail; - - while ((dir = FcStrListNext (dirlist))) - { - if (FcDebug () & FC_DBG_FONTSET) - printf ("adding fonts from%s\n", dir); - cache = FcDirCacheRead (dir, FcFalse, config); - if (!cache) - continue; - FcConfigAddCache (config, cache); - FcDirCacheUnload (cache); - } - - FcStrListDone (dirlist); - + if (!FcConfigAddDirList (config, FcSetSystem, config->fontDirs)) + return FcFalse; if (FcDebug () & FC_DBG_FONTSET) FcFontSetPrint (fonts); - return FcTrue; -bail: - return FcFalse; } FcBool @@ -514,7 +508,7 @@ FcConfigAddBlank (FcConfig *config, } int -FcConfigGetRescanInverval (FcConfig *config) +FcConfigGetRescanInterval (FcConfig *config) { if (!config) { @@ -526,7 +520,7 @@ FcConfigGetRescanInverval (FcConfig *config) } FcBool -FcConfigSetRescanInverval (FcConfig *config, int rescanInterval) +FcConfigSetRescanInterval (FcConfig *config, int rescanInterval) { if (!config) { @@ -1799,9 +1793,7 @@ FcConfigAppFontAddDir (FcConfig *config, const FcChar8 *dir) { FcFontSet *set; - FcStrSet *subdirs; - FcStrList *sublist; - FcChar8 *subdir; + FcStrSet *dirs; if (!config) { @@ -1809,8 +1801,9 @@ FcConfigAppFontAddDir (FcConfig *config, if (!config) return FcFalse; } - subdirs = FcStrSetCreate (); - if (!subdirs) + + dirs = FcStrSetCreate (); + if (!dirs) return FcFalse; set = FcConfigGetFonts (config, FcSetApplication); @@ -1819,26 +1812,20 @@ FcConfigAppFontAddDir (FcConfig *config, set = FcFontSetCreate (); if (!set) { - FcStrSetDestroy (subdirs); + FcStrSetDestroy (dirs); return FcFalse; } FcConfigSetFonts (config, set, FcSetApplication); } - if (!FcDirScanConfig (set, subdirs, config->blanks, dir, FcFalse, config)) + FcStrSetAddFilename (dirs, dir); + + if (!FcConfigAddDirList (config, FcSetApplication, dirs)) { - FcStrSetDestroy (subdirs); + FcStrSetDestroy (dirs); return FcFalse; } - if ((sublist = FcStrListCreate (subdirs))) - { - while ((subdir = FcStrListNext (sublist))) - { - FcConfigAppFontAddDir (config, subdir); - } - FcStrListDone (sublist); - } - FcStrSetDestroy (subdirs); + FcStrSetDestroy (dirs); return FcTrue; } @@ -1964,3 +1951,6 @@ FcConfigAcceptFont (FcConfig *config, return FcFalse; return FcTrue; } +#define __fccfg__ +#include "fcaliastail.h" +#undef __fccfg__