X-Git-Url: https://git.wh0rd.org/?p=fontconfig.git;a=blobdiff_plain;f=src%2Ffcinit.c;h=b7966b6db08a466196ad9fb493cd234238d6450b;hp=8a9bdbda8c6e1634bdbb39deb60ae221838b1d99;hb=HEAD;hpb=e1b9d091c661b0e1d1e9f73c5c55ad53959c55c7 diff --git a/src/fcinit.c b/src/fcinit.c index 8a9bdbd..b7966b6 100644 --- a/src/fcinit.c +++ b/src/fcinit.c @@ -1,5 +1,5 @@ /* - * $RCSId: xc/lib/fontconfig/src/fcinit.c,v 1.7 2002/08/22 07:36:44 keithp Exp $ + * fontconfig/src/fcinit.c * * Copyright © 2001 Keith Packard * @@ -7,23 +7,23 @@ * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in + * documentation, and that the name of the author(s) not be used in * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no + * specific, written prior permission. The authors make no * representations about the suitability of this software for any purpose. It * is provided "as is" without express or implied warranty. * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -#include #include "fcint.h" +#include static FcConfig * FcInitFallbackConfig (void) @@ -35,6 +35,8 @@ FcInitFallbackConfig (void) goto bail0; if (!FcConfigAddDir (config, (FcChar8 *) FC_DEFAULT_FONTS)) goto bail1; + if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR)) + goto bail1; return config; bail1: @@ -56,17 +58,37 @@ FcConfig * FcInitLoadConfig (void) { FcConfig *config; - + + FcInitDebug (); config = FcConfigCreate (); if (!config) - return FcFalse; - + return NULL; + if (!FcConfigParseAndLoad (config, 0, FcTrue)) { FcConfigDestroy (config); return FcInitFallbackConfig (); } + if (config->cacheDirs && config->cacheDirs->num == 0) + { + fprintf (stderr, + "Fontconfig warning: no elements found. Check configuration.\n"); + fprintf (stderr, + "Fontconfig warning: adding %s\n", + FC_CACHEDIR); + fprintf (stderr, + "Fontconfig warning: adding ~/.fontconfig\n"); + if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR) || + !FcConfigAddCacheDir (config, (FcChar8 *) "~/.fontconfig")) + { + fprintf (stderr, + "Fontconfig error: out of memory"); + FcConfigDestroy (config); + return FcInitFallbackConfig (); + } + } + return config; } @@ -78,6 +100,7 @@ FcInitLoadConfigAndFonts (void) { FcConfig *config = FcInitLoadConfig (); + FcInitDebug (); if (!config) return 0; if (!FcConfigBuildFonts (config)) @@ -100,7 +123,7 @@ FcInit (void) return FcTrue; config = FcInitLoadConfigAndFonts (); if (!config) - return FcTrue; + return FcFalse; FcConfigSetCurrent (config); if (FcDebug() & FC_DBG_MEMORY) FcMemReport (); @@ -117,7 +140,9 @@ FcFini (void) FcConfigDestroy (_fcConfig); FcPatternFini (); - FcCharSetThawAll (); + FcCacheFini (); + if (FcDebug() & FC_DBG_MEMORY) + FcMemReport (); } /* @@ -161,7 +186,7 @@ FcInitBringUptoDate (void) } static struct { - char *name; + char name[16]; int alloc_count; int alloc_mem; int free_count; @@ -206,9 +231,6 @@ static int FcMemNotice = 1*1024*1024; static int FcAllocNotify, FcFreeNotify; -void -FcValueListReport (void); - void FcMemReport (void) { @@ -231,7 +253,6 @@ FcMemReport (void) FcAllocMem - FcFreeMem); FcAllocNotify = 0; FcFreeNotify = 0; - FcValueListReport (); } void @@ -263,3 +284,6 @@ FcMemFree (int kind, int size) FcMemReport (); } } +#define __fcinit__ +#include "fcaliastail.h" +#undef __fcinit__