]> git.wh0rd.org - fontconfig.git/commitdiff
Add better error reporting when loading config file
authorKeith Packard <keithp@keithp.com>
Thu, 28 Feb 2002 16:51:48 +0000 (16:51 +0000)
committerKeith Packard <keithp@keithp.com>
Thu, 28 Feb 2002 16:51:48 +0000 (16:51 +0000)
fc-list/fc-list.c
fontconfig/fontconfig.h
src/fclist.c
src/fcmatch.c
src/fcxml.c

index e33a81ed2558a6746f26869e03d77025be174e0c..14feab07c245c9ca45f0c0934d0bd78cc08ae507 100644 (file)
@@ -112,7 +112,7 @@ main (int argc, char **argv)
        return 1;
     }
     if (argv[i])
-       pat = FcNameParse ((const FcChar8 *)argv[i]);
+       pat = FcNameParse ((FcChar8 *) argv[i]);
     else
        pat = FcPatternCreate ();
     
index 05399c2debac2623aaa266f2c76c11781c643818..3d9d9893a544aa110f939f5e7cd05bdd493ac37a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.2 2002/02/15 06:01:27 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.3 2002/02/19 07:50:43 keithp Exp $
  *
  * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -399,12 +399,26 @@ FcObjectSetVaBuild (const char *first, va_list va);
 FcObjectSet *
 FcObjectSetBuild (const char *first, ...);
 
+FcFontSet *
+FcFontSetList (FcConfig            *config,
+              FcFontSet    **sets,
+              int          nsets,
+              FcPattern    *p,
+              FcObjectSet  *os);
+
 FcFontSet *
 FcFontList (FcConfig   *config,
            FcPattern   *p,
            FcObjectSet *os);
 
 /* fcmatch.c */
+FcPattern *
+FcFontSetMatch (FcConfig    *config,
+               FcFontSet   **sets,
+               int         nsets,
+               FcPattern   *p,
+               FcResult    *result);
+
 FcPattern *
 FcFontMatch (FcConfig  *config,
             FcPattern  *p, 
index 4cbfed2d70bc006262bf840f2942b074745ff561..17343be0a2e9410d6082e286d942087c01b437ba 100644 (file)
@@ -356,14 +356,16 @@ bail0:
 }
 
 FcFontSet *
-FcFontList (FcConfig   *config,
-           FcPattern   *p,
-           FcObjectSet *os)
+FcFontSetList (FcConfig            *config,
+              FcFontSet    **sets,
+              int          nsets,
+              FcPattern    *p,
+              FcObjectSet  *os)
 {
     FcFontSet      *ret;
     FcFontSet      *s;
     int                    f;
-    FcSetName      set;
+    int                    set;
     FcListHashTable table;
     int                    i;
     FcListBucket    *bucket;
@@ -379,9 +381,9 @@ FcFontList (FcConfig        *config,
      * Walk all available fonts adding those that
      * match to the hash table
      */
-    for (set = FcSetSystem; set <= FcSetApplication; set++)
+    for (set = 0; set < nsets; set++)
     {
-       s = config->fonts[set];
+       s = sets[set];
        if (!s)
            continue;
        for (f = 0; f < s->nfont; f++)
@@ -440,3 +442,25 @@ bail1:
 bail0:
     return 0;
 }
+
+FcFontSet *
+FcFontList (FcConfig   *config,
+           FcPattern   *p,
+           FcObjectSet *os)
+{
+    FcFontSet  *sets[2];
+    int                nsets;
+
+    if (!config)
+    {
+       config = FcConfigGetCurrent ();
+       if (!config)
+           return 0;
+    }
+    nsets = 0;
+    if (config->fonts[FcSetSystem])
+       sets[nsets++] = config->fonts[FcSetSystem];
+    if (config->fonts[FcSetApplication])
+       sets[nsets++] = config->fonts[FcSetApplication];
+    return FcFontSetList (config, sets, nsets, p, os);
+}
index 2040515dae01a6cb83e9a7b5f61a622c62e5b346..f24e7efa990d2cf65af46beee4fe3451f8137896 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: $
+ * $XFree86: xc/lib/fontconfig/src/fcmatch.c,v 1.2 2002/02/15 06:01:28 keithp Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -239,16 +239,18 @@ FcCompare (FcPattern      *pat,
 }
 
 FcPattern *
-FcFontMatch (FcConfig  *config,
-            FcPattern  *p, 
-            FcResult   *result)
+FcFontSetMatch (FcConfig    *config,
+               FcFontSet   **sets,
+               int         nsets,
+               FcPattern   *p,
+               FcResult    *result)
 {
     double         score[NUM_MATCHER], bestscore[NUM_MATCHER];
     int                    f;
     FcFontSet      *s;
     FcPattern      *best;
     FcPattern      *new;
-    FcPatternElt   *fe, *pe;
+    FcPatternElt    *fe, *pe;
     FcValue        v;
     int                    i;
     FcSetName      set;
@@ -267,9 +269,9 @@ FcFontMatch (FcConfig       *config,
        if (!config)
            return 0;
     }
-    for (set = FcSetSystem; set <= FcSetApplication; set++)
+    for (set = 0; set < nsets; set++)
     {
-       s = config->fonts[set];
+       s = sets[set];
        if (!s)
            continue;
        for (f = 0; f < s->nfont; f++)
@@ -346,3 +348,25 @@ FcFontMatch (FcConfig      *config,
     FcConfigSubstitute (config, new, FcMatchFont);
     return new;
 }
+
+FcPattern *
+FcFontMatch (FcConfig  *config,
+            FcPattern  *p, 
+            FcResult   *result)
+{
+    FcFontSet  *sets[2];
+    int                nsets;
+
+    if (!config)
+    {
+       config = FcConfigGetCurrent ();
+       if (!config)
+           return 0;
+    }
+    nsets = 0;
+    if (config->fonts[FcSetSystem])
+       sets[nsets++] = config->fonts[FcSetSystem];
+    if (config->fonts[FcSetApplication])
+       sets[nsets++] = config->fonts[FcSetApplication];
+    return FcFontSetMatch (config, sets, nsets, p, result);
+}
index bbe41fc1247334c70ecea4c11b5baa3843d897f4..06f1112a9955ad357e5cd46e9bc8378497afadea 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcxml.c,v 1.4 2002/02/20 00:32:30 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcxml.c,v 1.5 2002/02/22 18:54:07 keithp Exp $
  *
  * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -1596,12 +1596,22 @@ FcConfigParseAndLoad (FcConfig      *config,
     do {
        buf = XML_GetBuffer (p, BUFSIZ);
        if (!buf)
+       {
+           FcConfigError (&parse, "cannot get parse buffer");
            goto bail3;
+       }
        len = fread (buf, 1, BUFSIZ, f);
        if (len < 0)
+       {
+           FcConfigError (&parse, "failed reading config file");
            goto bail3;
+       }
        if (!XML_ParseBuffer (p, len, len == 0))
+       {
+           FcConfigError (&parse, "%s", 
+                          XML_ErrorString (XML_GetErrorCode (p)));
            goto bail3;
+       }
     } while (len != 0);
     error = parse.error;
 bail3: