]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcinit.c
Dont require freetype to build with fontconfig
[fontconfig.git] / src / fcinit.c
index b18d08a08af0446b37ab304049429efa4bb9f701..1b9ef2a94c173672f1cd5d5a121844ec42310825 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: $
+ * $XFree86: xc/lib/fontconfig/src/fcinit.c,v 1.4 2002/05/21 17:06:22 keithp Exp $
  *
  * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
  *
 #include <stdlib.h>
 #include "fcint.h"
 
-FcBool
-FcInitFonts (void)
-{
-    FcConfig   *config;
-
-    config = FcConfigGetCurrent ();
-    if (!config)
-       return FcFalse;
-
-    if (FcConfigGetFonts (config, FcSetSystem))
-       return FcTrue;
-
-    return FcConfigBuildFonts (config);
-}
-
-static FcBool
+static FcConfig *
 FcInitFallbackConfig (void)
 {
     FcConfig   *config;
@@ -48,27 +33,23 @@ FcInitFallbackConfig (void)
     config = FcConfigCreate ();
     if (!config)
        goto bail0;
-    if (!FcConfigAddDir (config, (FcChar8 *) FC_FALLBACK_FONTS))
+    if (!FcConfigAddDir (config, (FcChar8 *) FC_DEFAULT_FONTS))
        goto bail1;
-    FcConfigSetCurrent (config);
-    return FcTrue;
+    return config;
 
 bail1:
     FcConfigDestroy (config);
 bail0:
-    return FcFalse;
+    return 0;
 }
 
 /*
- * Locate and parse the configuration file
+ * Load the configuration files
  */
-FcBool
-FcInitConfig (void)
+FcConfig *
+FcInitLoadConfig (void)
 {
-    FcConfig    *config;
-    
-    if (FcConfigGetCurrent ())
-       return FcTrue;
+    FcConfig   *config;
     
     config = FcConfigCreate ();
     if (!config)
@@ -79,15 +60,83 @@ FcInitConfig (void)
        FcConfigDestroy (config);
        return FcInitFallbackConfig ();
     }
-    
+
+    return config;
+}
+
+/*
+ * Load the configuration files and scan for available fonts
+ */
+FcConfig *
+FcInitLoadConfigAndFonts (void)
+{
+    FcConfig   *config = FcInitLoadConfig ();
+
+    if (!config)
+       return 0;
+    if (!FcConfigBuildFonts (config))
+    {
+       FcConfigDestroy (config);
+       return 0;
+    }
+    return config;
+}
+
+/*
+ * Initialize the default library configuration
+ */
+FcBool
+FcInit (void)
+{
+    FcConfig   *config;
+
+    if (_fcConfig)
+       return FcTrue;
+    config = FcInitLoadConfigAndFonts ();
+    if (!config)
+       return FcTrue;
     FcConfigSetCurrent (config);
     return FcTrue;
 }
 
+/*
+ * Reread the configuration and available font lists
+ */
 FcBool
-FcInit (void)
+FcInitReinitialize (void)
 {
-    return FcInitConfig () && FcInitFonts ();
+    FcConfig   *config;
+
+    config = FcInitLoadConfigAndFonts ();
+    if (!config)
+       return FcFalse;
+    FcConfigSetCurrent (config);
+    return FcTrue;
+}
+
+FcBool
+FcInitBringUptoDate (void)
+{
+    FcConfig   *config = FcConfigGetCurrent ();
+    time_t     now;
+
+    /*
+     * rescanInterval == 0 disables automatic up to date
+     */
+    if (config->rescanInterval == 0)
+       return FcTrue;
+    /*
+     * Check no more often than rescanInterval seconds
+     */
+    now = time (0);
+    if (config->rescanTime + config->rescanInterval - now > 0)
+       return FcTrue;
+    /*
+     * If up to date, don't reload configuration
+     */
+    if (FcConfigUptoDate (0))
+       return FcTrue;
+    return FcInitReinitialize ();
 }
 
 static struct {