/* * This file is part of libdom test suite. * Licensed under the MIT License, * http://www.opensource.org/licenses/mit-license.php * Copyright 2009 Bo Yang */ #include #include #include #include #include #include #include #include // For parsers #include #include #include #include #include "utils.h" #include "domts.h" /** * Load the file as it is a XML file * * \param file The file path * \param willBeModified Whether this file will be modified, not used */ dom_document *load_xml(const char *file, bool willBeModified) { dom_xml_parser *parser = NULL; int handle; int readed; dom_xml_error error; dom_document *ret; uint8_t buffer[1024]; UNUSED(willBeModified); parser = dom_xml_parser_create(NULL, NULL, mymsg, NULL, &ret); if (parser == NULL) { fprintf(stderr, "Can't create XMLParser\n"); return NULL; } handle = open(file, O_RDONLY); if (handle == -1) { dom_node_unref(ret); dom_xml_parser_destroy(parser); fprintf(stderr, "Can't open test input file: %s\n", file); return NULL; } readed = read(handle, buffer, 1024); error = dom_xml_parser_parse_chunk(parser, buffer, readed); if (error != DOM_XML_OK) { dom_node_unref(ret); dom_xml_parser_destroy(parser); fprintf(stderr, "Parsing errors occur\n"); return NULL; } while(readed == 1024) { readed = read(handle, buffer, 1024); error = dom_xml_parser_parse_chunk(parser, buffer, readed); if (error != DOM_XML_OK) { dom_node_unref(ret); dom_xml_parser_destroy(parser); fprintf(stderr, "Parsing errors occur\n"); return NULL; } } error = dom_xml_parser_completed(parser); if (error != DOM_XML_OK) { dom_node_unref(ret); dom_xml_parser_destroy(parser); fprintf(stderr, "Parsing error when construct DOM\n"); return NULL; } dom_xml_parser_destroy(parser); return ret; } /** * Load the file as it is a HTML file * * \param file The file path * \param willBeModified Whether this file will be modified, not used */ dom_document *load_html(const char *file, bool willBeModified) { dom_hubbub_parser *parser = NULL; int handle; int readed; dom_hubbub_error error; dom_document *ret; uint8_t buffer[1024]; dom_hubbub_parser_params params; UNUSED(willBeModified); params.enc = NULL; params.fix_enc = true; params.enable_script = false; params.msg = mymsg; params.script = NULL; params.ctx = NULL; params.daf = NULL; error = dom_hubbub_parser_create(¶ms, &parser, &ret); if (error != DOM_HUBBUB_OK) { fprintf(stderr, "Can't create Hubbub Parser\n"); return NULL; } handle = open(file, O_RDONLY); if (handle == -1) { dom_hubbub_parser_destroy(parser); /* fprintf(stderr, "Can't open test input file: %s\n", file); */ return NULL; } readed = read(handle, buffer, 1024); error = dom_hubbub_parser_parse_chunk(parser, buffer, readed); if (error != DOM_HUBBUB_OK) { dom_hubbub_parser_destroy(parser); fprintf(stderr, "Parsing errors occur\n"); return NULL; } while(readed == 1024) { readed = read(handle, buffer, 1024); error = dom_hubbub_parser_parse_chunk(parser, buffer, readed); if (error != DOM_HUBBUB_OK) { dom_hubbub_parser_destroy(parser); fprintf(stderr, "Parsing errors occur\n"); return NULL; } } error = dom_hubbub_parser_completed(parser); if (error != DOM_HUBBUB_OK) { dom_hubbub_parser_destroy(parser); fprintf(stderr, "Parsing error when construct DOM\n"); return NULL; } dom_hubbub_parser_destroy(parser); return ret; }