]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcxml.c
2006-08-04 Keith Packard (keithp@keithp.com) reviewed by: plam
[fontconfig.git] / src / fcxml.c
index f92bf567ce36a6a1b5416e793290d6ff3a045b58..c5c90656dbec37fb5435882cba6201ad891ed03a 100644 (file)
@@ -285,6 +285,7 @@ typedef enum _FcElement {
     FcElementNone,
     FcElementFontconfig,
     FcElementDir,
+    FcElementCacheDir,
     FcElementCache,
     FcElementInclude,
     FcElementConfig,
@@ -345,6 +346,7 @@ static const struct {
 } fcElementMap[] = {
     { "fontconfig",    FcElementFontconfig },
     { "dir",           FcElementDir },
+    { "cachedir",      FcElementCacheDir },
     { "cache",         FcElementCache },
     { "include",       FcElementInclude },
     { "config",                FcElementConfig },
@@ -1966,8 +1968,7 @@ FcParsePatelt (FcConfigParse *parse)
        }
     }
 
-    FcVStackPushPattern (parse, FcPatternFreeze(pattern));
-    FcPatternDestroy (pattern);
+    FcVStackPushPattern (parse, pattern);
 }
 
 static void
@@ -2054,6 +2055,21 @@ FcEndElement(void *userData, const XML_Char *name)
        }
        FcStrFree (data);
        break;
+    case FcElementCacheDir:
+       data = FcStrBufDone (&parse->pstack->str);
+       if (!data)
+       {
+           FcConfigMessage (parse, FcSevereError, "out of memory");
+           break;
+       }
+       if (!FcStrUsesHome (data) || FcConfigHome ())
+       {
+           if (!FcConfigAddCacheDir (parse->config, data))
+               FcConfigMessage (parse, FcSevereError, "out of memory; cannot add cache directory %s", data);
+       }
+       FcStrFree (data);
+       break;
+       
     case FcElementCache:
        data = FcStrBufDone (&parse->pstack->str);
        if (!data)