FAXPP_Error FAXPP_init_tokenize(FAXPP_Tokenizer *env, void *buffer, unsigned int length, unsigned int done) { env->buffer = buffer; env->buffer_end = buffer + length; env->position = buffer; env->current_char = 0; env->char_len = 0; env->line = 1; env->column = 0; env->nesting_level = 0; env->do_encode = 1; env->seen_doc_element = 0; env->buffer_done = done; env->decode = 0; env->token_buffer.cursor = 0; env->token_position1 = 0; env->token_position2 = 0; env->state = initial_state; env->stored_state = 0; env->start_element_name_state = default_start_element_name_state; env->element_content_state = default_element_content_state; env->ncname_start_char = NCNAME_START_CHAR10; env->ncname_char = NCNAME_CHAR10; env->non_restricted_char = NON_RESTRICTED_CHAR10; FAXPP_Error err = sniff_encoding(env); if(err) return err; token_start_position(env); return NO_ERROR; }
static int create_parser(saxctxt *ctxt, const char **bufp, apr_size_t *bytes) { xmlCharEncoding enc; #ifndef USE_OLD_LIBXML2 int xmlopts = XML_PARSE_RECOVER | XML_PARSE_NONET | XML_PARSE_NOBLANKS | XML_PARSE_NOERROR | XML_PARSE_NOWARNING; #endif enc = sniff_encoding(ctxt, *bufp, *bytes); ctxt->parser = htmlCreatePushParserCtxt(&sax, ctxt, *bufp, 0, 0, enc); if (ctxt->parser == NULL) return 0; apr_pool_cleanup_register (ctxt->f->r->pool, ctxt->parser, (int(*)(void*))htmlFreeParserCtxt, apr_pool_cleanup_null); #ifndef USE_OLD_LIBXML2 if (xmlopts = xmlCtxtUseOptions(ctxt->parser, xmlopts), xmlopts) ap_log_error(APLOG_MARK, APLOG_WARNING, APR_SUCCESS, ctxt->f->r, "create_parser: unsupported parser opts %x", xmlopts); #endif return 1; }