mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
fixed problem with comments reported by Nick Kew added routines
* HTMLparser.c: fixed problem with comments reported by Nick Kew * encoding.c: added routines xmlUTF8Size and xmlUTF8Charcmp for some future cleanup of UTF8 handling
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
Tue Jul 29 12:28:17 HKT 2003 William Brack <wbrack@mmm.com.hk>
|
||||||
|
|
||||||
|
* HTMLparser.c: fixed problem with comments reported by Nick Kew
|
||||||
|
* encoding.c: added routines xmlUTF8Size and xmlUTF8Charcmp for
|
||||||
|
some future cleanup of UTF8 handling
|
||||||
|
|
||||||
Mon Jul 28 16:39:14 EDT 2003 Daniel Veillard <daniel@veillard.com>
|
Mon Jul 28 16:39:14 EDT 2003 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* xpath.c: applied a change suggested by Sean Griffin in bug
|
* xpath.c: applied a change suggested by Sean Griffin in bug
|
||||||
|
@ -4358,10 +4358,11 @@ htmlParseLookupSequence(htmlParserCtxtPtr ctxt, xmlChar first,
|
|||||||
(buf[base + 2] == '-') && (buf[base + 3] == '-')) {
|
(buf[base + 2] == '-') && (buf[base + 3] == '-')) {
|
||||||
incomment = 1;
|
incomment = 1;
|
||||||
}
|
}
|
||||||
/* do not increment base, some people use <!--> */
|
/* do not increment past <!, some people use <!--> */
|
||||||
|
base += 2;
|
||||||
}
|
}
|
||||||
if (incomment) {
|
if (incomment) {
|
||||||
if (base + 3 < len)
|
if (base + 3 > len)
|
||||||
return(-1);
|
return(-1);
|
||||||
if ((buf[base] == '-') && (buf[base + 1] == '-') &&
|
if ((buf[base] == '-') && (buf[base + 1] == '-') &&
|
||||||
(buf[base + 2] == '>')) {
|
(buf[base + 2] == '>')) {
|
||||||
|
47
encoding.c
47
encoding.c
@ -84,6 +84,53 @@ static int xmlLittleEndian = 1;
|
|||||||
* *
|
* *
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlUTF8Size:
|
||||||
|
* @utf: pointer to the UTF8 character
|
||||||
|
*
|
||||||
|
* returns the numbers of bytes in the character, -1 on format error
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
xmlUTF8Size(const xmlChar *utf) {
|
||||||
|
xmlChar mask;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
if (utf == NULL)
|
||||||
|
return -1;
|
||||||
|
if (*utf < 0x80)
|
||||||
|
return 1;
|
||||||
|
/* check valid UTF8 character */
|
||||||
|
if (!(*utf & 0x40))
|
||||||
|
return -1;
|
||||||
|
/* determine number of bytes in char */
|
||||||
|
len = 2;
|
||||||
|
for (mask=0x20; mask != 0; mask>>=1) {
|
||||||
|
if (!(*utf & mask))
|
||||||
|
return len;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xmlUTF8Charcmp
|
||||||
|
* @utf1: pointer to first UTF8 char
|
||||||
|
* @utf2: pointer to second UTF8 char
|
||||||
|
*
|
||||||
|
* returns result of comparing the two UCS4 values
|
||||||
|
* as with xmlStrncmp
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
xmlUTF8Charcmp(const xmlChar *utf1, const xmlChar *utf2) {
|
||||||
|
|
||||||
|
if (utf1 == NULL ) {
|
||||||
|
if (utf2 == NULL)
|
||||||
|
return 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return xmlStrncmp(utf1, utf2, xsltUTF8Size(utf1));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xmlUTF8Strlen:
|
* xmlUTF8Strlen:
|
||||||
* @utf: a sequence of UTF-8 encoded bytes
|
* @utf: a sequence of UTF-8 encoded bytes
|
||||||
|
@ -208,7 +208,6 @@ int xmlGetUTF8Char (const unsigned char *utf,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
int xmlCheckUTF8 (const unsigned char *utf);
|
int xmlCheckUTF8 (const unsigned char *utf);
|
||||||
|
|
||||||
int xmlUTF8Strsize (const xmlChar *utf,
|
int xmlUTF8Strsize (const xmlChar *utf,
|
||||||
int len);
|
int len);
|
||||||
xmlChar * xmlUTF8Strndup (const xmlChar *utf,
|
xmlChar * xmlUTF8Strndup (const xmlChar *utf,
|
||||||
@ -220,9 +219,10 @@ int xmlUTF8Strloc (const xmlChar *utf,
|
|||||||
xmlChar * xmlUTF8Strsub (const xmlChar *utf,
|
xmlChar * xmlUTF8Strsub (const xmlChar *utf,
|
||||||
int start,
|
int start,
|
||||||
int len);
|
int len);
|
||||||
|
|
||||||
int xmlUTF8Strlen (const xmlChar *utf);
|
int xmlUTF8Strlen (const xmlChar *utf);
|
||||||
|
int xmlUTF8Size (const xmlChar *utf);
|
||||||
|
int xmlUTF8Charcmp (const xmlChar *utf1,
|
||||||
|
const xmlChar *utf2);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user