Ejemplo n.º 1
0
static int NameTokIter(XMLCH **next, int isNmToken)
{
	int i;
	XMLCH *p = *next;
	UTF8LEN(p, i);
	if (isNmToken) {
		if (!XMLIsNameChar(p, i)) return -1;
	}
	else if (!XMLIsNameStartChar(p, i)) return -1;
	
	for (p+=i; *p && *p!=' '; p+=i) {
			UTF8LEN(p, i);
			if (!XMLIsNameChar(p, i)) return -1;
	}
	i = p - *next;
	(*next) += (*p) ? i+1 : i;
	return i;
}
Ejemplo n.º 2
0
int str_utf8_len(const char* p_str)
{
	char* str = (char*) p_str;
	int clen = strlen(p_str);
	int len = 0;

	for(char *ptr = str; 
		*ptr != 0 && len < clen; 
		len++, 
		ptr += UTF8LEN(((unsigned char)*ptr))
	);
 
	return len;
}
Ejemplo n.º 3
0
size_t UTF8BufToLatin1(XMLCH *buf, XMLCH *end)
{	
	int c, len;
	XMLCH *o, *l;
	o = l = buf;
	for (len=0; *buf && buf!=end; buf+=len, o++) {
		len = UTF8LEN(*buf);
		if (len==1) *o = *buf;
		else if (len==2) {
			c = (*buf & 0x1F) << 6;
			c |= buf[1] & 0x3F;
			*o = (c>0xFF) ? NONLAT : (XMLCH)c;
		}
		else *o = NONLAT;
	}
	return o-l;
}
Ejemplo n.º 4
0
int str_utf8_char_len(unsigned char ch)
{
	return (int)(UTF8LEN((ch)));
}