MCPcopy Create free account
hub / github.com/KhronosGroup/OpenCOLLADA / htmlParseCharRef

Function htmlParseCharRef

Externals/LibXML/HTMLparser.c:3096–3156  ·  view source on GitHub ↗

* htmlParseCharRef: * @ctxt: an HTML parser context * * 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

3094 * Returns the value parsed (as an int)
3095 */
3096int
3097htmlParseCharRef(htmlParserCtxtPtr ctxt) {
3098 int val = 0;
3099
3100 if ((ctxt == NULL) || (ctxt->input == NULL)) {
3101 htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR,
3102 "htmlParseCharRef: context error\n",
3103 NULL, NULL);
3104 return(0);
3105 }
3106 if ((CUR == '&') && (NXT(1) == '#') &&
3107 ((NXT(2) == 'x') || NXT(2) == 'X')) {
3108 SKIP(3);
3109 while (CUR != ';') {
3110 if ((CUR >= '0') && (CUR <= '9'))
3111 val = val * 16 + (CUR - '0');
3112 else if ((CUR >= 'a') && (CUR <= 'f'))
3113 val = val * 16 + (CUR - 'a') + 10;
3114 else if ((CUR >= 'A') && (CUR <= 'F'))
3115 val = val * 16 + (CUR - 'A') + 10;
3116 else {
3117 htmlParseErr(ctxt, XML_ERR_INVALID_HEX_CHARREF,
3118 "htmlParseCharRef: missing semicolumn\n",
3119 NULL, NULL);
3120 break;
3121 }
3122 NEXT;
3123 }
3124 if (CUR == ';')
3125 NEXT;
3126 } else if ((CUR == '&') && (NXT(1) == '#')) {
3127 SKIP(2);
3128 while (CUR != ';') {
3129 if ((CUR >= '0') && (CUR <= '9'))
3130 val = val * 10 + (CUR - '0');
3131 else {
3132 htmlParseErr(ctxt, XML_ERR_INVALID_DEC_CHARREF,
3133 "htmlParseCharRef: missing semicolumn\n",
3134 NULL, NULL);
3135 break;
3136 }
3137 NEXT;
3138 }
3139 if (CUR == ';')
3140 NEXT;
3141 } else {
3142 htmlParseErr(ctxt, XML_ERR_INVALID_CHARREF,
3143 "htmlParseCharRef: invalid value\n", NULL, NULL);
3144 }
3145 /*
3146 * Check the value IS_CHAR ...
3147 */
3148 if (IS_CHAR(val)) {
3149 return(val);
3150 } else {
3151 htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR,
3152 "htmlParseCharRef: invalid xmlChar value %d\n",
3153 val);

Callers 3

test_htmlParseCharRefFunction · 0.85
htmlParseHTMLAttributeFunction · 0.85
htmlParseReferenceFunction · 0.85

Calls 2

htmlParseErrFunction · 0.85
htmlParseErrIntFunction · 0.85

Tested by 1

test_htmlParseCharRefFunction · 0.68