goto bail;
break;
case FcVStackRange:
- for (i = v->u.range.begin; i <= v->u.range.end; i++)
+ if (v->u.range.begin <= v->u.range.end)
{
- if (!FcBlanksAdd (parse->config->blanks, i))
- goto bail;
+ for (i = v->u.range.begin; i <= v->u.range.end; i++)
+ {
+ if (!FcBlanksAdd (parse->config->blanks, i))
+ goto bail;
+ }
}
break;
default:
n++;
break;
case FcVStackRange:
- for (i = vstack->u.range.begin; i <= vstack->u.range.end; i++)
+ if (vstack->u.range.begin <= vstack->u.range.end)
{
- if (!FcCharSetAddChar (charset, i))
- {
- FcConfigMessage (parse, FcSevereWarning, "invalid character: 0x%04x", i);
- }
- else
- n++;
+ for (i = vstack->u.range.begin; i <= vstack->u.range.end; i++)
+ {
+ if (!FcCharSetAddChar (charset, i))
+ {
+ FcConfigMessage (parse, FcSevereWarning, "invalid character: 0x%04x", i);
+ }
+ else
+ n++;
+ }
}
break;
default:
DIR *d;
struct dirent *e;
FcBool ret = FcTrue;
+ FcChar8 *fullDir;
+ const FcChar8 *scanDir;
FcChar8 *file;
FcChar8 *base;
FcStrSet *files;
- d = opendir ((char *) dir);
+ fullDir = FcConfigGetRootPlus (config, dir);
+ if (fullDir)
+ scanDir = fullDir;
+ else
+ scanDir = dir;
+ d = opendir ((char *) scanDir);
+ if (fullDir)
+ FcStrFree (fullDir);
if (!d)
{
if (complain)
XML_Parser p;
FcChar8 *filename;
+ const FcChar8 *readFile;
+ FcChar8 *fullFile;
int fd;
int len;
FcConfigParse parse;
void *buf;
#endif
- filename = FcConfigFilename (name);
+ filename = FcConfigFilename2 (config, name);
if (!filename)
goto bail0;
goto bail0;
}
- if (FcFileIsDir (filename))
+ if (FcFileIsDir2 (config, filename))
{
FcBool ret = FcConfigParseAndLoadDir (config, name, filename, complain);
FcStrFree (filename);
if (FcDebug () & FC_DBG_CONFIG)
printf ("\tLoading config file %s\n", filename);
- fd = open ((char *) filename, O_RDONLY);
+ fullFile = FcConfigGetRootPlus (config, filename);
+ if (fullFile)
+ readFile = fullFile;
+ else
+ readFile = filename;
+ fd = open ((char *) readFile, O_RDONLY);
+ if (fullFile)
+ FcStrFree (fullFile);
if (fd == -1) {
FcStrFree (filename);
goto bail0;