Example #1
0
static const FcCharSet *
scan (FILE *f, char *file, FcCharSetFreezer *freezer)
{
    FcCharSet	    *c = 0;
    const FcCharSet *n;
    int		    start, end, ucs4;
    char	    line[1024];
    int		    lineno = 0;

    while (get_line (f, line, &lineno))
    {
	if (!strncmp (line, "include", 7))
	{
	    file = strchr (line, ' ');
            if (!file)
                fatal (line, lineno, 
                       "invalid syntax, expected: include filename");
	    while (isspace(*file))
		file++;
	    f = scanopen (file);
	    if (!f)
		fatal (file, 0, "can't open");
	    n = scan (f, file, freezer);
	    fclose (f);
	    return n;
	}
	if (strchr (line, '-'))
	{
	    if (sscanf (line, "%x-%x", &start, &end) != 2)
		fatal (file, lineno, "parse error");
	}
	else
	{
	    if (sscanf (line, "%x", &start) != 1)
		fatal (file, lineno, "parse error");
	    end = start;
	}
	if (!c)
	    c = FcCharSetCreate ();
	for (ucs4 = start; ucs4 <= end; ucs4++)
	{
	    if (!FcCharSetAddChar (c, ucs4))
		fatal (file, lineno, "out of memory");
	}
    }
    n = FcCharSetFreeze (freezer, c);
    FcCharSetDestroy (c);
    return n;
}
Example #2
0
static FcCharSet *
scan (FILE *f, char *file)
{
    FcCharSet	*c = 0;
    FcCharSet	*n;
    int		start, end, ucs4;
    char	line[1024];
    int		lineno = 0;

    while (get_line (f, line, &lineno))
    {
	if (!strncmp (line, "include", 7))
	{
	    file = strchr (line, ' ');
	    while (*file == ' ')
		file++;
	    end = strlen (file);
	    if (file[end-1] == '\n')
		file[end-1] = '\0';
	    f = fopen (file, "r");
	    if (!f)
		fatal (file, 0, "can't open");
	    c = scan (f, file);
	    fclose (f);
	    return c;
	}
	if (strchr (line, '-'))
	{
	    if (sscanf (line, "%x-%x", &start, &end) != 2)
		fatal (file, lineno, "parse error");
	}
	else
	{
	    if (sscanf (line, "%x", &start) != 1)
		fatal (file, lineno, "parse error");
	    end = start;
	}
	if (!c)
	    c = FcCharSetCreate ();
	for (ucs4 = start; ucs4 <= end; ucs4++)
	{
	    if (!FcCharSetAddChar (c, ucs4))
		fatal (file, lineno, "out of memory");
	}
    }
    n = FcCharSetFreeze (c);
    FcCharSetDestroy (c);
    return n;
}
Example #3
0
static FcCharSet *
scan (FILE *f, char *file, FcCharSetFreezer *freezer)
{
    FcCharSet	    *c = 0;
    FcCharSet	    *n;
    FcBool	    del;
    int		    start, end, ucs4;
    char	    buf[1024];
    char	    *line;
    int		    lineno = 0;

    while ((line = get_line (f, buf, &lineno)))
    {
	if (!strncmp (line, "include", 7))
	{
	    FILE *included_f;
	    char *included_file;
	    included_file = strchr (line, ' ');
            if (!included_file)
                fatal (file, lineno,
                       "invalid syntax, expected: include filename");
	    while (isspace(*included_file))
		included_file++;
	    included_f = scanopen (included_file);
	    if (!included_f)
		fatal (included_file, 0, "can't open");
	    n = scan (included_f, included_file, freezer);
	    fclose (included_f);
	    if (!c)
		c = FcCharSetCreate ();
	    if (!FcCharSetMerge (c, n, NULL))
		fatal (file, lineno, "out of memory");
	    FcCharSetDestroy (n);
	    continue;
	}
	del = FcFalse;
	if (line[0] == '-')
	{
	  del = FcTrue;
	  line++;
	}
	if (strchr (line, '-'))
	{
	    if (sscanf (line, "%x-%x", &start, &end) != 2)
		fatal (file, lineno, "parse error");
	}
	else
	{
	    if (sscanf (line, "%x", &start) != 1)
		fatal (file, lineno, "parse error");
	    end = start;
	}
	if (!c)
	    c = FcCharSetCreate ();
	for (ucs4 = start; ucs4 <= end; ucs4++)
	{
	    if (!((del ? FcCharSetDelChar : FcCharSetAddChar) (c, ucs4)))
		fatal (file, lineno, "out of memory");
	}
    }
    n = (FcCharSet *) FcCharSetFreeze (freezer, c);
    FcCharSetDestroy (c);
    return n;
}