175584Sru/* Dummy handler functions for the Expat test suite 275584Sru __ __ _ 375584Sru ___\ \/ /_ __ __ _| |_ 475584Sru / _ \\ /| '_ \ / _` | __| 5104862Sru | __// \| |_) | (_| | |_ 675584Sru \___/_/\_\ .__/ \__,_|\__| 775584Sru |_| XML parser 875584Sru 975584Sru Copyright (c) 2001-2006 Fred L. Drake, Jr. <fdrake@users.sourceforge.net> 1075584Sru Copyright (c) 2003 Greg Stein <gstein@users.sourceforge.net> 1175584Sru Copyright (c) 2005-2007 Steven Solie <steven@solie.ca> 1275584Sru Copyright (c) 2005-2012 Karl Waclawek <karl@waclawek.net> 1375584Sru Copyright (c) 2016-2022 Sebastian Pipping <sebastian@pipping.org> 1475584Sru Copyright (c) 2017-2022 Rhodri James <rhodri@wildebeest.org.uk> 1575584Sru Copyright (c) 2017 Joe Orton <jorton@redhat.com> 1675584Sru Copyright (c) 2017 Jos�� Guti��rrez de la Concha <jose@zeroc.com> 1775584Sru Copyright (c) 2018 Marco Maggi <marco.maggi-ipsu@poste.it> 1875584Sru Copyright (c) 2019 David Loffredo <loffredo@steptools.com> 1975584Sru Copyright (c) 2020 Tim Gates <tim.gates@iress.com> 2075584Sru Copyright (c) 2021 Donghee Na <donghee.na@python.org> 2175584Sru Licensed under the MIT license: 2275584Sru 2375584Sru Permission is hereby granted, free of charge, to any person obtaining 2475584Sru a copy of this software and associated documentation files (the 2575584Sru "Software"), to deal in the Software without restriction, including 26104862Sru without limitation the rights to use, copy, modify, merge, publish, 27104862Sru distribute, sublicense, and/or sell copies of the Software, and to permit 28114402Sru persons to whom the Software is furnished to do so, subject to the 29104862Sru following conditions: 30114402Sru 31104862Sru The above copyright notice and this permission notice shall be included 32104862Sru in all copies or substantial portions of the Software. 3375584Sru 3475584Sru THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 3575584Sru EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 3675584Sru MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 3775584Sru NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 3875584Sru DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 39104862Sru OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 40114402Sru USE OR OTHER DEALINGS IN THE SOFTWARE. 41114402Sru*/ 42114402Sru 43114402Sru#include "expat.h" 44114402Sru#include "internal.h" 45114402Sru#include "common.h" 46114402Sru#include "dummy.h" 47114402Sru 48114402Sru/* Dummy handlers for when we need to set a handler to tickle a bug, 49104862Sru but it doesn't need to do anything. 50104862Sru*/ 51104862Srustatic unsigned long dummy_handler_flags = 0; 52114402Sru 53114402Sruvoid 54104862Sruinit_dummy_handlers(void) { 55114402Sru dummy_handler_flags = 0; 56114402Sru} 57104862Sru 58104862Sruunsigned long 59104862Sruget_dummy_handler_flags(void) { 60104862Sru return dummy_handler_flags; 61114402Sru} 62114402Sru 63114402Sruvoid XMLCALL 64114402Srudummy_xdecl_handler(void *userData, const XML_Char *version, 65114402Sru const XML_Char *encoding, int standalone) { 66114402Sru UNUSED_P(userData); 67114402Sru UNUSED_P(version); 68114402Sru UNUSED_P(encoding); 69114402Sru UNUSED_P(standalone); 70114402Sru} 71114402Sru 72114402Sruvoid XMLCALL 73114402Srudummy_start_doctype_handler(void *userData, const XML_Char *doctypeName, 74114402Sru const XML_Char *sysid, const XML_Char *pubid, 75114402Sru int has_internal_subset) { 76114402Sru UNUSED_P(userData); 77114402Sru UNUSED_P(doctypeName); 78114402Sru UNUSED_P(sysid); 79114402Sru UNUSED_P(pubid); 80114402Sru UNUSED_P(has_internal_subset); 81114402Sru dummy_handler_flags |= DUMMY_START_DOCTYPE_HANDLER_FLAG; 82114402Sru} 83151497Sru 84151497Sruvoid XMLCALL 85151497Srudummy_end_doctype_handler(void *userData) { 86151497Sru UNUSED_P(userData); 87151497Sru dummy_handler_flags |= DUMMY_END_DOCTYPE_HANDLER_FLAG; 88114402Sru} 89151497Sru 90151497Sruvoid XMLCALL 91151497Srudummy_entity_decl_handler(void *userData, const XML_Char *entityName, 92151497Sru int is_parameter_entity, const XML_Char *value, 93151497Sru int value_length, const XML_Char *base, 94114402Sru const XML_Char *systemId, const XML_Char *publicId, 95114402Sru const XML_Char *notationName) { 96114402Sru UNUSED_P(userData); 97114402Sru UNUSED_P(entityName); 98114402Sru UNUSED_P(is_parameter_entity); 99114402Sru UNUSED_P(value); 100114402Sru UNUSED_P(value_length); 101114402Sru UNUSED_P(base); 102114402Sru UNUSED_P(systemId); 103114402Sru UNUSED_P(publicId); 104114402Sru UNUSED_P(notationName); 105114402Sru dummy_handler_flags |= DUMMY_ENTITY_DECL_HANDLER_FLAG; 106114402Sru} 107114402Sru 108114402Sruvoid XMLCALL 109114402Srudummy_notation_decl_handler(void *userData, const XML_Char *notationName, 110114402Sru const XML_Char *base, const XML_Char *systemId, 111114402Sru const XML_Char *publicId) { 112114402Sru UNUSED_P(userData); 113114402Sru UNUSED_P(notationName); 114114402Sru UNUSED_P(base); 115114402Sru UNUSED_P(systemId); 116114402Sru UNUSED_P(publicId); 117114402Sru dummy_handler_flags |= DUMMY_NOTATION_DECL_HANDLER_FLAG; 118114402Sru} 119114402Sru 120114402Sruvoid XMLCALL 121114402Srudummy_element_decl_handler(void *userData, const XML_Char *name, 122114402Sru XML_Content *model) { 123114402Sru UNUSED_P(userData); 124114402Sru UNUSED_P(name); 125114402Sru /* The content model must be freed by the handler. Unfortunately 126114402Sru * we cannot pass the parser as the userData because this is used 127114402Sru * with other handlers that require other userData. 128114402Sru */ 129114402Sru XML_FreeContentModel(g_parser, model); 13075584Sru dummy_handler_flags |= DUMMY_ELEMENT_DECL_HANDLER_FLAG; 13175584Sru} 132104862Sru 133104862Sruvoid XMLCALL 134104862Srudummy_attlist_decl_handler(void *userData, const XML_Char *elname, 135104862Sru const XML_Char *attname, const XML_Char *att_type, 136104862Sru const XML_Char *dflt, int isrequired) { 137104862Sru UNUSED_P(userData); 138104862Sru UNUSED_P(elname); 139104862Sru UNUSED_P(attname); 140104862Sru UNUSED_P(att_type); 141104862Sru UNUSED_P(dflt); 142104862Sru UNUSED_P(isrequired); 143104862Sru dummy_handler_flags |= DUMMY_ATTLIST_DECL_HANDLER_FLAG; 144104862Sru} 145104862Sru 146104862Sruvoid XMLCALL 147104862Srudummy_comment_handler(void *userData, const XML_Char *data) { 148104862Sru UNUSED_P(userData); 149104862Sru UNUSED_P(data); 150104862Sru dummy_handler_flags |= DUMMY_COMMENT_HANDLER_FLAG; 151104862Sru} 152104862Sru 153104862Sruvoid XMLCALL 154104862Srudummy_pi_handler(void *userData, const XML_Char *target, const XML_Char *data) { 155104862Sru UNUSED_P(userData); 156104862Sru UNUSED_P(target); 157104862Sru UNUSED_P(data); 158104862Sru dummy_handler_flags |= DUMMY_PI_HANDLER_FLAG; 159104862Sru} 160104862Sru 161104862Sruvoid XMLCALL 162104862Srudummy_start_element(void *userData, const XML_Char *name, 163104862Sru const XML_Char **atts) { 164104862Sru UNUSED_P(userData); 165104862Sru UNUSED_P(name); 166104862Sru UNUSED_P(atts); 167104862Sru dummy_handler_flags |= DUMMY_START_ELEMENT_HANDLER_FLAG; 168104862Sru} 169104862Sru 170104862Sruvoid XMLCALL 171104862Srudummy_end_element(void *userData, const XML_Char *name) { 172104862Sru UNUSED_P(userData); 173104862Sru UNUSED_P(name); 174104862Sru} 175104862Sru 176104862Sruvoid XMLCALL 177104862Srudummy_start_cdata_handler(void *userData) { 178104862Sru UNUSED_P(userData); 179104862Sru dummy_handler_flags |= DUMMY_START_CDATA_HANDLER_FLAG; 180104862Sru} 181104862Sru 182104862Sruvoid XMLCALL 183104862Srudummy_end_cdata_handler(void *userData) { 184104862Sru UNUSED_P(userData); 185104862Sru dummy_handler_flags |= DUMMY_END_CDATA_HANDLER_FLAG; 186104862Sru} 187104862Sru 188104862Sruvoid XMLCALL 189104862Srudummy_cdata_handler(void *userData, const XML_Char *s, int len) { 190104862Sru UNUSED_P(userData); 191104862Sru UNUSED_P(s); 192104862Sru UNUSED_P(len); 193104862Sru} 194104862Sru 195104862Sruvoid XMLCALL 196104862Srudummy_start_namespace_decl_handler(void *userData, const XML_Char *prefix, 197104862Sru const XML_Char *uri) { 198104862Sru UNUSED_P(userData); 199104862Sru UNUSED_P(prefix); 200104862Sru UNUSED_P(uri); 201104862Sru dummy_handler_flags |= DUMMY_START_NS_DECL_HANDLER_FLAG; 202104862Sru} 203104862Sru 204104862Sruvoid XMLCALL 205104862Srudummy_end_namespace_decl_handler(void *userData, const XML_Char *prefix) { 206104862Sru UNUSED_P(userData); 207104862Sru UNUSED_P(prefix); 208104862Sru dummy_handler_flags |= DUMMY_END_NS_DECL_HANDLER_FLAG; 209104862Sru} 210104862Sru 211104862Sru/* This handler is obsolete, but while the code exists we should 212104862Sru * ensure that dealing with the handler is covered by tests. 213104862Sru */ 214104862Sruvoid XMLCALL 215104862Srudummy_unparsed_entity_decl_handler(void *userData, const XML_Char *entityName, 216104862Sru const XML_Char *base, 217104862Sru const XML_Char *systemId, 218104862Sru const XML_Char *publicId, 219104862Sru const XML_Char *notationName) { 220104862Sru UNUSED_P(userData); 221104862Sru UNUSED_P(entityName); 222104862Sru UNUSED_P(base); 223104862Sru UNUSED_P(systemId); 224104862Sru UNUSED_P(publicId); 225104862Sru UNUSED_P(notationName); 226104862Sru dummy_handler_flags |= DUMMY_UNPARSED_ENTITY_DECL_HANDLER_FLAG; 227104862Sru} 228104862Sru 229104862Sruvoid XMLCALL 230104862Srudummy_default_handler(void *userData, const XML_Char *s, int len) { 231104862Sru UNUSED_P(userData); 232104862Sru UNUSED_P(s); 233104862Sru UNUSED_P(len); 234104862Sru} 235104862Sru 236104862Sruvoid XMLCALL 237104862Srudummy_start_doctype_decl_handler(void *userData, const XML_Char *doctypeName, 238104862Sru const XML_Char *sysid, const XML_Char *pubid, 239104862Sru int has_internal_subset) { 240104862Sru UNUSED_P(userData); 241104862Sru UNUSED_P(doctypeName); 242104862Sru UNUSED_P(sysid); 243104862Sru UNUSED_P(pubid); 244104862Sru UNUSED_P(has_internal_subset); 245104862Sru dummy_handler_flags |= DUMMY_START_DOCTYPE_DECL_HANDLER_FLAG; 246104862Sru} 247104862Sru 248104862Sruvoid XMLCALL 249104862Srudummy_end_doctype_decl_handler(void *userData) { 250104862Sru UNUSED_P(userData); 251104862Sru dummy_handler_flags |= DUMMY_END_DOCTYPE_DECL_HANDLER_FLAG; 252104862Sru} 253104862Sru 254104862Sruvoid XMLCALL 255104862Srudummy_skip_handler(void *userData, const XML_Char *entityName, 256104862Sru int is_parameter_entity) { 257104862Sru UNUSED_P(userData); 258104862Sru UNUSED_P(entityName); 259104862Sru UNUSED_P(is_parameter_entity); 260104862Sru dummy_handler_flags |= DUMMY_SKIP_HANDLER_FLAG; 261104862Sru} 262104862Sru