| 2085 | } |
| 2086 | |
| 2087 | static enum XML_Error PTRCALL |
| 2088 | externalEntityInitProcessor3(XML_Parser parser, |
| 2089 | const char *start, |
| 2090 | const char *end, |
| 2091 | const char **endPtr) |
| 2092 | { |
| 2093 | int tok; |
| 2094 | const char *next = start; /* XmlContentTok doesn't always set the last arg */ |
| 2095 | eventPtr = start; |
| 2096 | tok = XmlContentTok(encoding, start, end, &next); |
| 2097 | eventEndPtr = next; |
| 2098 | |
| 2099 | switch (tok) { |
| 2100 | case XML_TOK_XML_DECL: |
| 2101 | { |
| 2102 | enum XML_Error result; |
| 2103 | result = processXmlDecl(parser, 1, start, next); |
| 2104 | if (result != XML_ERROR_NONE) |
| 2105 | return result; |
| 2106 | switch (ps_parsing) { |
| 2107 | case XML_SUSPENDED: |
| 2108 | *endPtr = next; |
| 2109 | return XML_ERROR_NONE; |
| 2110 | case XML_FINISHED: |
| 2111 | return XML_ERROR_ABORTED; |
| 2112 | default: |
| 2113 | start = next; |
| 2114 | } |
| 2115 | } |
| 2116 | break; |
| 2117 | case XML_TOK_PARTIAL: |
| 2118 | if (!ps_finalBuffer) { |
| 2119 | *endPtr = start; |
| 2120 | return XML_ERROR_NONE; |
| 2121 | } |
| 2122 | return XML_ERROR_UNCLOSED_TOKEN; |
| 2123 | case XML_TOK_PARTIAL_CHAR: |
| 2124 | if (!ps_finalBuffer) { |
| 2125 | *endPtr = start; |
| 2126 | return XML_ERROR_NONE; |
| 2127 | } |
| 2128 | return XML_ERROR_PARTIAL_CHAR; |
| 2129 | } |
| 2130 | processor = externalEntityContentProcessor; |
| 2131 | tagLevel = 1; |
| 2132 | return externalEntityContentProcessor(parser, start, end, endPtr); |
| 2133 | } |
| 2134 | |
| 2135 | static enum XML_Error PTRCALL |
| 2136 | externalEntityContentProcessor(XML_Parser parser, |
no test coverage detected