X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcint.h;h=cb137d389615646d802285ad37a09437a53867d3;hb=af180c40376690b7ced5262156fbe13c9ebba1e2;hp=b77b50d08d3dda8a882bf0734f34b0a4962be695;hpb=97293e07dd688b3d81cd6e7ecd5df4cdef4c87d8;p=fontconfig.git diff --git a/src/fcint.h b/src/fcint.h index b77b50d..cb137d3 100644 --- a/src/fcint.h +++ b/src/fcint.h @@ -25,9 +25,19 @@ #ifndef _FCINT_H_ #define _FCINT_H_ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include +#ifdef HAVE_INTTYPES_H +#include +#elif defined(HAVE_STDINT_H) #include +#else +#error missing C99 integer data types +#endif #include #include #include @@ -38,9 +48,6 @@ #include #include #include -#ifdef HAVE_CONFIG_H -#include -#endif #ifndef FC_CONFIG_PATH #define FC_CONFIG_PATH "fonts.conf" @@ -219,14 +226,14 @@ struct _FcCharSet { int num; /* size of leaves and numbers arrays */ int bank; union { - struct { - FcCharLeaf **leaves; - FcChar16 *numbers; - } dyn; struct { int leafidx_offset; int numbers_offset; } stat; + struct { + FcCharLeaf **leaves; + FcChar16 *numbers; + } dyn; } u; }; @@ -251,8 +258,10 @@ typedef struct _FcStrBuf { } FcStrBuf; typedef struct _FcCache { - int magic; /* 0xFC02FC02 */ - int count; /* number of bytes of data in block */ + int magic; /* FC_CACHE_MAGIC */ + int subdirs; /* number of subdir strings */ + off_t pos; /* position of data block in file */ + off_t count; /* number of bytes of data in block */ int bank; /* bank ID */ int pattern_count; /* number of FcPatterns */ int patternelt_count; /* number of FcPatternElts */ @@ -314,33 +323,9 @@ typedef struct _FcCaseFold { #define fc_value_langset(v) (((v)->type & FC_STORAGE_STATIC) ? (const FcLangSet *)(((char *) v) + (v)->u.l_off) : (v) -> u.l) #define fc_storage_type(v) ((v)->type & ~FC_STORAGE_STATIC) -/* - * The per-user ~/.fonts.cache- file is loaded into - * this data structure. Each directory gets a substructure - * which is validated by comparing the directory timestamp with - * that saved in the cache. When valid, the entire directory cache - * can be immediately loaded without reading the directory. Otherwise, - * the files are checked individually; updated files are loaded into the - * cache which is then rewritten to the users home directory - */ - -#define FC_CACHE_MAGIC 0xFC02FC02 - -typedef struct _FcGlobalCacheDir FcGlobalCacheDir; - -struct _FcGlobalCacheDir { - struct _FcGlobalCacheDir *next; - char *name; - FcCache metadata; - off_t offset; - void *ent; -}; +#define fc_alignof(type) offsetof (struct { char c; type member; }, member) -typedef struct _FcGlobalCache { - FcGlobalCacheDir *dirs; - FcBool updated; - int fd; -} FcGlobalCache; +#define FC_CACHE_MAGIC 0xFC02FC04 struct _FcAtomic { FcChar8 *file; /* original file name */ @@ -374,6 +359,10 @@ struct _FcConfig { * of configured directories */ FcStrSet *fontDirs; + /* + * List of directories containing cache files. + */ + FcStrSet *cacheDirs; /* * Names of all of the configuration files used * to create this configuration @@ -420,48 +409,23 @@ typedef struct _FcFileTime { typedef struct _FcCharMap FcCharMap; -#define ALIGN(v,type) ((__typeof__(v))(((uintptr_t)(v) + __alignof__(type) - 1) & ~(__alignof__(type) - 1))) +/* watch out; assumes that v is void * -PL */ +#define ALIGN(v,type) ((void *)(((uintptr_t)(v) + fc_alignof(type) - 1) & ~(fc_alignof(type) - 1))) /* fcblanks.c */ /* fccache.c */ -FcGlobalCache * -FcGlobalCacheCreate (void); - -void -FcGlobalCacheDestroy (FcGlobalCache *cache); - -FcBool -FcGlobalCacheReadDir (FcFontSet *set, - FcStrSet *dirs, - FcGlobalCache *cache, - const char *dir, - FcConfig *config); - -void -FcGlobalCacheLoad (FcGlobalCache *cache, - FcStrSet *staleDirs, - const FcChar8 *cache_file, - FcConfig *config); - -FcBool -FcGlobalCacheUpdate (FcGlobalCache *cache, - const char *file, - FcFontSet *set, - FcConfig *config); - -FcBool -FcGlobalCacheSave (FcGlobalCache *cache, - const FcChar8 *cache_file, - FcConfig *config); - FcFontSet * -FcCacheRead (FcConfig *config, FcGlobalCache * cache); +FcCacheRead (FcConfig *config); FcBool -FcDirCacheWrite (FcFontSet *set, FcStrSet * dirs, const FcChar8 *dir); +FcDirCacheWrite (FcFontSet *set, FcStrSet * dirs, const FcChar8 *dir, FcConfig *config); +FcBool +FcDirCacheConsume (FILE *file, FcFontSet *set, FcStrSet *dirs, + const FcChar8 *dir, char *dirname); + FcBool FcDirCacheRead (FcFontSet * set, FcStrSet * dirs, const FcChar8 *dir, FcConfig *config); @@ -469,7 +433,7 @@ extern int *_fcBankId, *_fcBankIdx; int FcCacheBankToIndexMTF (int bank); -static __inline__ int +static inline int FcCacheBankToIndex (int bank) { return (_fcBankId[*_fcBankIdx] == bank) ? *_fcBankIdx : FcCacheBankToIndexMTF(bank); @@ -492,6 +456,13 @@ FcBool FcConfigAddDir (FcConfig *config, const FcChar8 *d); +FcBool +FcConfigAddCacheDir (FcConfig *config, + const FcChar8 *d); + +FcStrList * +FcConfigGetCacheDirs (FcConfig *config); + FcBool FcConfigAddConfigFile (FcConfig *config, const FcChar8 *f); @@ -609,7 +580,7 @@ FcSubstPrint (const FcSubst *subst); extern int FcDebugVal; -static __inline__ int +static inline int FcDebug (void) { return FcDebugVal; } void @@ -627,7 +598,6 @@ FcFileIsDir (const FcChar8 *file); FcBool FcFileScanConfig (FcFontSet *set, FcStrSet *dirs, - FcFileCache *cache, FcBlanks *blanks, const FcChar8 *file, FcBool force, @@ -636,7 +606,6 @@ FcFileScanConfig (FcFontSet *set, FcBool FcDirScanConfig (FcFontSet *set, FcStrSet *dirs, - FcFileCache *cache, FcBlanks *blanks, const FcChar8 *dir, FcBool force, @@ -816,7 +785,7 @@ FcObjectSerialize (void); const char * FcObjectPtrU (FcObjectPtr p); -static __inline__ int +static inline int FcObjectPtrCompare (const FcObjectPtr a, const FcObjectPtr b) { return a - b; @@ -846,21 +815,12 @@ FcPatternAddWithBinding (FcPattern *p, FcValueBinding binding, FcBool append); -FcPattern * -FcPatternFreeze (FcPattern *p); - void FcPatternFini (void); FcBool FcPatternAppend (FcPattern *p, FcPattern *s); -void -FcPatternAddFullFname (const FcPattern *p, const char *fname); - -void -FcPatternTransferFullFname (const FcPattern *new, const FcPattern *orig); - const FcChar8 * FcStrStaticName (const FcChar8 *name); @@ -884,7 +844,7 @@ FcPatternDistributeBytes (FcCache * metadata, void * block_ptr); extern FcValueList ** _fcValueLists; extern FcPatternElt ** _fcPatternElts; -static __inline__ FcValueList * +static inline FcValueList * FcValueListPtrU (FcValueListPtr pi) { if (pi.bank == FC_BANK_DYNAMIC) @@ -893,7 +853,7 @@ FcValueListPtrU (FcValueListPtr pi) return &_fcValueLists[FcCacheBankToIndex(pi.bank)][pi.u.stat]; } -static __inline__ FcPatternElt * +static inline FcPatternElt * FcPatternEltU (FcPatternEltPtr pei) { if (pei.bank == FC_BANK_DYNAMIC) @@ -902,9 +862,6 @@ FcPatternEltU (FcPatternEltPtr pei) return &_fcPatternElts[FcCacheBankToIndex(pei.bank)][pei.u.stat]; } -FcPatternElt * -FcPatternEltU (FcPatternEltPtr pei); - FcValueListPtr FcValueListPtrCreateDynamic(FcValueList * p);