mirror of
https://github.com/GNOME/libxml2.git
synced 2025-03-19 18:50:25 +08: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:
parent
9deb242b55
commit
4a557d97bf
@ -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>
|
||||
|
||||
* 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] == '-')) {
|
||||
incomment = 1;
|
||||
}
|
||||
/* do not increment base, some people use <!--> */
|
||||
/* do not increment past <!, some people use <!--> */
|
||||
base += 2;
|
||||
}
|
||||
if (incomment) {
|
||||
if (base + 3 < len)
|
||||
if (base + 3 > len)
|
||||
return(-1);
|
||||
if ((buf[base] == '-') && (buf[base + 1] == '-') &&
|
||||
(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:
|
||||
* @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 xmlUTF8Strsize (const xmlChar *utf,
|
||||
int len);
|
||||
xmlChar * xmlUTF8Strndup (const xmlChar *utf,
|
||||
@ -220,9 +219,10 @@ int xmlUTF8Strloc (const xmlChar *utf,
|
||||
xmlChar * xmlUTF8Strsub (const xmlChar *utf,
|
||||
int start,
|
||||
int len);
|
||||
|
||||
int xmlUTF8Strlen (const xmlChar *utf);
|
||||
|
||||
int xmlUTF8Size (const xmlChar *utf);
|
||||
int xmlUTF8Charcmp (const xmlChar *utf1,
|
||||
const xmlChar *utf2);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user