| 3286 | #endif /* XML_DTD */ |
| 3287 | |
| 3288 | static enum XML_Error |
| 3289 | initializeEncoding(XML_Parser parser) |
| 3290 | { |
| 3291 | const char *s; |
| 3292 | #ifdef XML_UNICODE |
| 3293 | char encodingBuf[128]; |
| 3294 | if (!protocolEncodingName) |
| 3295 | s = NULL; |
| 3296 | else { |
| 3297 | int i; |
| 3298 | for (i = 0; protocolEncodingName[i]; i++) { |
| 3299 | if (i == sizeof(encodingBuf) - 1 |
| 3300 | || (protocolEncodingName[i] & ~0x7f) != 0) { |
| 3301 | encodingBuf[0] = '\0'; |
| 3302 | break; |
| 3303 | } |
| 3304 | encodingBuf[i] = (char)protocolEncodingName[i]; |
| 3305 | } |
| 3306 | encodingBuf[i] = '\0'; |
| 3307 | s = encodingBuf; |
| 3308 | } |
| 3309 | #else |
| 3310 | s = protocolEncodingName; |
| 3311 | #endif |
| 3312 | if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) |
| 3313 | return XML_ERROR_NONE; |
| 3314 | return handleUnknownEncoding(parser, protocolEncodingName); |
| 3315 | } |
| 3316 | |
| 3317 | static enum XML_Error |
| 3318 | processXmlDecl(XML_Parser parser, int isGeneralTextEntity, |
no test coverage detected