Commit 18b6857c authored by Keith Packard's avatar Keith Packard

Fix fc-lang to use new charset freezer API.

Charset freezer api now uses allocated object. Also required minor fixes to
charset freezer code to remove assumption that all input charsets are
persistant.
parent bc5e487f
......@@ -48,6 +48,8 @@ FcMemFree (int kind, int size)
{
}
int FcDebugVal;
FcChar8 *
FcConfigHome (void)
{
......@@ -114,14 +116,14 @@ scanopen (char *file)
* Comments begin with '#'
*/
static FcCharSet *
scan (FILE *f, char *file)
static const FcCharSet *
scan (FILE *f, char *file, FcCharSetFreezer *freezer)
{
FcCharSet *c = 0;
FcCharSet *n;
int start, end, ucs4;
char line[1024];
int lineno = 0;
FcCharSet *c = 0;
const FcCharSet *n;
int start, end, ucs4;
char line[1024];
int lineno = 0;
while (get_line (f, line, &lineno))
{
......@@ -136,9 +138,9 @@ scan (FILE *f, char *file)
f = scanopen (file);
if (!f)
fatal (file, 0, "can't open");
c = scan (f, file);
n = scan (f, file, freezer);
fclose (f);
return c;
return n;
}
if (strchr (line, '-'))
{
......@@ -159,7 +161,7 @@ scan (FILE *f, char *file)
fatal (file, lineno, "out of memory");
}
}
n = FcCharSetFreeze (c);
n = FcCharSetFreeze (freezer, c);
FcCharSetDestroy (c);
return n;
}
......@@ -222,7 +224,7 @@ int
main (int argc, char **argv)
{
static char *files[MAX_LANG];
static FcCharSet *sets[MAX_LANG];
static const FcCharSet *sets[MAX_LANG];
static int duplicate[MAX_LANG];
static int country[MAX_LANG];
static char *names[MAX_LANG];
......@@ -242,7 +244,11 @@ main (int argc, char **argv)
int setRangeStart[26];
int setRangeEnd[26];
FcChar8 setRangeChar;
FcCharSetFreezer *freezer;
freezer = FcCharSetFreezerCreate ();
if (!freezer)
fatal (argv[0], 0, "out of memory");
argi = 1;
while (argv[argi])
{
......@@ -264,7 +270,7 @@ main (int argc, char **argv)
f = scanopen (files[i]);
if (!f)
fatal (files[i], 0, strerror (errno));
sets[i] = scan (f, files[i]);
sets[i] = scan (f, files[i], freezer);
names[i] = get_name (files[i]);
langs[i] = get_lang(names[i]);
if (strchr (langs[i], '-'))
......
......@@ -1169,7 +1169,7 @@ FcCharSetFindFrozen (FcCharSetFreezer *freezer, const FcCharSet *orig)
return NULL;
}
static const FcCharSet *
const FcCharSet *
FcCharSetFreeze (FcCharSetFreezer *freezer, const FcCharSet *fcs)
{
FcCharSet *b;
......@@ -1177,10 +1177,6 @@ FcCharSetFreeze (FcCharSetFreezer *freezer, const FcCharSet *fcs)
FcCharLeaf *l;
int i;
n = FcCharSetFindFrozen (freezer, fcs);
if (n)
return n;
b = FcCharSetCreate ();
if (!b)
goto bail0;
......@@ -1217,7 +1213,7 @@ bail0:
return n;
}
static FcCharSetFreezer *
FcCharSetFreezer *
FcCharSetFreezerCreate (void)
{
FcCharSetFreezer *freezer;
......@@ -1279,6 +1275,9 @@ FcCharSetSerializeAlloc (FcSerialize *serialize, const FcCharSet *cs)
if (!serialize->cs_freezer)
return FcFalse;
}
if (FcCharSetFindFrozen (serialize->cs_freezer, cs))
return FcTrue;
cs = FcCharSetFreeze (serialize->cs_freezer, cs);
}
......
......@@ -623,6 +623,12 @@ FcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l);
void
FcLangCharSetPopulate (void);
FcCharSetFreezer *
FcCharSetFreezerCreate (void);
const FcCharSet *
FcCharSetFreeze (FcCharSetFreezer *freezer, const FcCharSet *fcs);
void
FcCharSetFreezerDestroy (FcCharSetFreezer *freezer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment