]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcinit.c
Bug 44826 - <alias> must contain only a single <family>
[fontconfig.git] / src / fcinit.c
index 65702b4421991ca73ec8ae89a54bc5be355adf89..b7966b6db08a466196ad9fb493cd234238d6450b 100644 (file)
@@ -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,15 +7,15 @@
  * 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
@@ -58,18 +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 <cachedir> elements found. Check configuration.\n");
+       fprintf (stderr,
+                "Fontconfig warning: adding <cachedir>%s</cachedir>\n",
+                FC_CACHEDIR);
+       fprintf (stderr,
+                "Fontconfig warning: adding <cachedir>~/.fontconfig</cachedir>\n");
+       if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR) ||
+           !FcConfigAddCacheDir (config, (FcChar8 *) "~/.fontconfig"))
+       {
+           fprintf (stderr,
+                    "Fontconfig error: out of memory");
+           FcConfigDestroy (config);
+           return FcInitFallbackConfig ();
+       }
+    }
+
     return config;
 }
 
@@ -104,7 +123,7 @@ FcInit (void)
        return FcTrue;
     config = FcInitLoadConfigAndFonts ();
     if (!config)
-       return FcTrue;
+       return FcFalse;
     FcConfigSetCurrent (config);
     if (FcDebug() & FC_DBG_MEMORY)
        FcMemReport ();
@@ -121,6 +140,9 @@ FcFini (void)
        FcConfigDestroy (_fcConfig);
 
     FcPatternFini ();
+    FcCacheFini ();
+    if (FcDebug() & FC_DBG_MEMORY)
+       FcMemReport ();
 }
 
 /*
@@ -262,3 +284,6 @@ FcMemFree (int kind, int size)
            FcMemReport ();
     }
 }
+#define __fcinit__
+#include "fcaliastail.h"
+#undef __fcinit__