MCPcopy Create free account
hub / github.com/Kitware/VTK / htmlParseCharRef

Function htmlParseCharRef

ThirdParty/libxml2/vtklibxml2/HTMLparser.c:3479–3542  ·  view source on GitHub ↗

* htmlParseCharRef: * @ctxt: an HTML parser context * * DEPRECATED: Internal function, don't use. * * parse Reference declarations * * [66] CharRef ::= '&#' [0-9]+ ';' | * '&#x' [0-9a-fA-F]+ ';' * * Returns the value parsed (as an int) */

Source from the content-addressed store, hash-verified

3477 * Returns the value parsed (as an int)
3478 */
3479int
3480htmlParseCharRef(htmlParserCtxtPtr ctxt) {
3481 int val = 0;
3482
3483 if ((ctxt == NULL) || (ctxt->input == NULL))
3484 return(0);
3485 if ((CUR == '&') && (NXT(1) == '#') &&
3486 ((NXT(2) == 'x') || NXT(2) == 'X')) {
3487 SKIP(3);
3488 while (CUR != ';') {
3489 if ((CUR >= '0') && (CUR <= '9')) {
3490 if (val < 0x110000)
3491 val = val * 16 + (CUR - '0');
3492 } else if ((CUR >= 'a') && (CUR <= 'f')) {
3493 if (val < 0x110000)
3494 val = val * 16 + (CUR - 'a') + 10;
3495 } else if ((CUR >= 'A') && (CUR <= 'F')) {
3496 if (val < 0x110000)
3497 val = val * 16 + (CUR - 'A') + 10;
3498 } else {
3499 htmlParseErr(ctxt, XML_ERR_INVALID_HEX_CHARREF,
3500 "htmlParseCharRef: missing semicolon\n",
3501 NULL, NULL);
3502 break;
3503 }
3504 NEXT;
3505 }
3506 if (CUR == ';')
3507 NEXT;
3508 } else if ((CUR == '&') && (NXT(1) == '#')) {
3509 SKIP(2);
3510 while (CUR != ';') {
3511 if ((CUR >= '0') && (CUR <= '9')) {
3512 if (val < 0x110000)
3513 val = val * 10 + (CUR - '0');
3514 } else {
3515 htmlParseErr(ctxt, XML_ERR_INVALID_DEC_CHARREF,
3516 "htmlParseCharRef: missing semicolon\n",
3517 NULL, NULL);
3518 break;
3519 }
3520 NEXT;
3521 }
3522 if (CUR == ';')
3523 NEXT;
3524 } else {
3525 htmlParseErr(ctxt, XML_ERR_INVALID_CHARREF,
3526 "htmlParseCharRef: invalid value\n", NULL, NULL);
3527 }
3528 /*
3529 * Check the value IS_CHAR ...
3530 */
3531 if (IS_CHAR(val)) {
3532 return(val);
3533 } else if (val >= 0x110000) {
3534 htmlParseErr(ctxt, XML_ERR_INVALID_CHAR,
3535 "htmlParseCharRef: value too large\n", NULL, NULL);
3536 } else {

Callers 2

htmlParseHTMLAttributeFunction · 0.85
htmlParseReferenceFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected