Fetch FONTCONFIG_SYSROOT in FcConfigCreate
This saves the value of FONTCONFIG_SYSROOT in the config instead of having to call getenv every time we need this value. This also uses 'realpath' to construct a canonical path to sysroot, eliminating symlinks and relative path names. Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
97fa77d27f
commit
67e9c12c5a
22
src/fccfg.c
22
src/fccfg.c
|
@ -96,6 +96,20 @@ FcConfigFini (void)
|
||||||
FcConfigDestroy (cfg);
|
FcConfigDestroy (cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static FcChar8 *
|
||||||
|
FcConfigRealPath(const FcChar8 *path)
|
||||||
|
{
|
||||||
|
char resolved_name[PATH_MAX+1];
|
||||||
|
char *resolved_ret;
|
||||||
|
|
||||||
|
if (!path)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
resolved_ret = realpath((const char *) path, resolved_name);
|
||||||
|
if (resolved_ret)
|
||||||
|
path = (FcChar8 *) resolved_ret;
|
||||||
|
return FcStrCopyFilename(path);
|
||||||
|
}
|
||||||
|
|
||||||
FcConfig *
|
FcConfig *
|
||||||
FcConfigCreate (void)
|
FcConfigCreate (void)
|
||||||
|
@ -159,7 +173,7 @@ FcConfigCreate (void)
|
||||||
|
|
||||||
config->expr_pool = NULL;
|
config->expr_pool = NULL;
|
||||||
|
|
||||||
config->sysRoot = NULL;
|
config->sysRoot = FcConfigRealPath((const FcChar8 *) getenv("FONTCONFIG_SYSROOT"));
|
||||||
|
|
||||||
config->rulesetList = FcPtrListCreate (FcDestroyAsRuleSet);
|
config->rulesetList = FcPtrListCreate (FcDestroyAsRuleSet);
|
||||||
if (!config->rulesetList)
|
if (!config->rulesetList)
|
||||||
|
@ -2462,11 +2476,7 @@ FcConfigGetSysRoot (const FcConfig *config)
|
||||||
if (!config)
|
if (!config)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config->sysRoot)
|
|
||||||
return config->sysRoot;
|
return config->sysRoot;
|
||||||
|
|
||||||
return (FcChar8 *) getenv ("FONTCONFIG_SYSROOT");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -2495,7 +2505,7 @@ FcConfigSetSysRoot (FcConfig *config,
|
||||||
|
|
||||||
if (sysroot)
|
if (sysroot)
|
||||||
{
|
{
|
||||||
s = FcStrCopyFilename (sysroot);
|
s = FcConfigRealPath(sysroot);
|
||||||
if (!s)
|
if (!s)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue