示例#1
0
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;
}
示例#2
0
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;
}