From 80c053b725669c1e982cceedb87f04ebb9c6f1e9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 28 Feb 2002 16:51:48 +0000 Subject: [PATCH] Add better error reporting when loading config file --- fc-list/fc-list.c | 2 +- fontconfig/fontconfig.h | 16 +++++++++++++++- src/fclist.c | 36 ++++++++++++++++++++++++++++++------ src/fcmatch.c | 38 +++++++++++++++++++++++++++++++------- src/fcxml.c | 12 +++++++++++- 5 files changed, 88 insertions(+), 16 deletions(-) diff --git a/fc-list/fc-list.c b/fc-list/fc-list.c index e33a81e..14feab0 100644 --- a/fc-list/fc-list.c +++ b/fc-list/fc-list.c @@ -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 (); diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h index 05399c2..3d9d989 100644 --- a/fontconfig/fontconfig.h +++ b/fontconfig/fontconfig.h @@ -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, diff --git a/src/fclist.c b/src/fclist.c index 4cbfed2..17343be 100644 --- a/src/fclist.c +++ b/src/fclist.c @@ -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); +} diff --git a/src/fcmatch.c b/src/fcmatch.c index 2040515..f24e7ef 100644 --- a/src/fcmatch.c +++ b/src/fcmatch.c @@ -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); +} diff --git a/src/fcxml.c b/src/fcxml.c index bbe41fc..06f1112 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -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: -- 2.39.5