1/*
2 * SAX.c : Old SAX v1 handlers to build a tree.
3 *         Deprecated except for compatibility
4 *
5 * See Copyright for the status of this software.
6 *
7 * Daniel Veillard <daniel@veillard.com>
8 */
9
10
11#define IN_LIBXML
12#include "libxml.h"
13#include <stdlib.h>
14#include <string.h>
15#include <libxml/xmlmemory.h>
16#include <libxml/tree.h>
17#include <libxml/parser.h>
18#include <libxml/parserInternals.h>
19#include <libxml/valid.h>
20#include <libxml/entities.h>
21#include <libxml/xmlerror.h>
22#include <libxml/debugXML.h>
23#include <libxml/xmlIO.h>
24#include <libxml/SAX.h>
25#include <libxml/uri.h>
26#include <libxml/valid.h>
27#include <libxml/HTMLtree.h>
28#include <libxml/globals.h>
29#include <libxml/SAX2.h>
30
31#ifdef LIBXML_LEGACY_ENABLED
32#ifdef LIBXML_SAX1_ENABLED
33/**
34 * initxmlDefaultSAXHandler:
35 * @hdlr:  the SAX handler
36 * @warning:  flag if non-zero sets the handler warning procedure
37 *
38 * Initialize the default XML SAX version 1 handler
39 * DEPRECATED: use xmlSAX2InitDefaultSAXHandler() for the new SAX2 blocks
40 */
41void
42initxmlDefaultSAXHandler(xmlSAXHandlerV1 *hdlr, int warning)
43{
44
45    if(hdlr->initialized == 1)
46	return;
47
48    hdlr->internalSubset = xmlSAX2InternalSubset;
49    hdlr->externalSubset = xmlSAX2ExternalSubset;
50    hdlr->isStandalone = xmlSAX2IsStandalone;
51    hdlr->hasInternalSubset = xmlSAX2HasInternalSubset;
52    hdlr->hasExternalSubset = xmlSAX2HasExternalSubset;
53    hdlr->resolveEntity = xmlSAX2ResolveEntity;
54    hdlr->getEntity = xmlSAX2GetEntity;
55    hdlr->getParameterEntity = xmlSAX2GetParameterEntity;
56    hdlr->entityDecl = xmlSAX2EntityDecl;
57    hdlr->attributeDecl = xmlSAX2AttributeDecl;
58    hdlr->elementDecl = xmlSAX2ElementDecl;
59    hdlr->notationDecl = xmlSAX2NotationDecl;
60    hdlr->unparsedEntityDecl = xmlSAX2UnparsedEntityDecl;
61    hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator;
62    hdlr->startDocument = xmlSAX2StartDocument;
63    hdlr->endDocument = xmlSAX2EndDocument;
64    hdlr->startElement = xmlSAX2StartElement;
65    hdlr->endElement = xmlSAX2EndElement;
66    hdlr->reference = xmlSAX2Reference;
67    hdlr->characters = xmlSAX2Characters;
68    hdlr->cdataBlock = xmlSAX2CDataBlock;
69    hdlr->ignorableWhitespace = xmlSAX2Characters;
70    hdlr->processingInstruction = xmlSAX2ProcessingInstruction;
71    if (warning == 0)
72	hdlr->warning = NULL;
73    else
74	hdlr->warning = xmlParserWarning;
75    hdlr->error = xmlParserError;
76    hdlr->fatalError = xmlParserError;
77
78    hdlr->initialized = 1;
79}
80
81#ifdef LIBXML_HTML_ENABLED
82
83/**
84 * inithtmlDefaultSAXHandler:
85 * @hdlr:  the SAX handler
86 *
87 * Initialize the default HTML SAX version 1 handler
88 * DEPRECATED: use xmlSAX2InitHtmlDefaultSAXHandler() for the new SAX2 blocks
89 */
90void
91inithtmlDefaultSAXHandler(xmlSAXHandlerV1 *hdlr)
92{
93    if(hdlr->initialized == 1)
94	return;
95
96    hdlr->internalSubset = xmlSAX2InternalSubset;
97    hdlr->externalSubset = NULL;
98    hdlr->isStandalone = NULL;
99    hdlr->hasInternalSubset = NULL;
100    hdlr->hasExternalSubset = NULL;
101    hdlr->resolveEntity = NULL;
102    hdlr->getEntity = xmlSAX2GetEntity;
103    hdlr->getParameterEntity = NULL;
104    hdlr->entityDecl = NULL;
105    hdlr->attributeDecl = NULL;
106    hdlr->elementDecl = NULL;
107    hdlr->notationDecl = NULL;
108    hdlr->unparsedEntityDecl = NULL;
109    hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator;
110    hdlr->startDocument = xmlSAX2StartDocument;
111    hdlr->endDocument = xmlSAX2EndDocument;
112    hdlr->startElement = xmlSAX2StartElement;
113    hdlr->endElement = xmlSAX2EndElement;
114    hdlr->reference = NULL;
115    hdlr->characters = xmlSAX2Characters;
116    hdlr->cdataBlock = xmlSAX2CDataBlock;
117    hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace;
118    hdlr->processingInstruction = xmlSAX2ProcessingInstruction;
119    hdlr->comment = xmlSAX2Comment;
120    hdlr->warning = xmlParserWarning;
121    hdlr->error = xmlParserError;
122    hdlr->fatalError = xmlParserError;
123
124    hdlr->initialized = 1;
125}
126
127#endif /* LIBXML_HTML_ENABLED */
128
129#ifdef LIBXML_DOCB_ENABLED
130/**
131 * initdocbDefaultSAXHandler:
132 * @hdlr:  the SAX handler
133 *
134 * Initialize the default DocBook SAX version 1 handler
135 * DEPRECATED: use xmlSAX2InitDocbDefaultSAXHandler() for the new SAX2 blocks
136 */
137void
138initdocbDefaultSAXHandler(xmlSAXHandlerV1 *hdlr)
139{
140    if(hdlr->initialized == 1)
141	return;
142
143    hdlr->internalSubset = xmlSAX2InternalSubset;
144    hdlr->externalSubset = NULL;
145    hdlr->isStandalone = xmlSAX2IsStandalone;
146    hdlr->hasInternalSubset = xmlSAX2HasInternalSubset;
147    hdlr->hasExternalSubset = xmlSAX2HasExternalSubset;
148    hdlr->resolveEntity = xmlSAX2ResolveEntity;
149    hdlr->getEntity = xmlSAX2GetEntity;
150    hdlr->getParameterEntity = NULL;
151    hdlr->entityDecl = xmlSAX2EntityDecl;
152    hdlr->attributeDecl = NULL;
153    hdlr->elementDecl = NULL;
154    hdlr->notationDecl = NULL;
155    hdlr->unparsedEntityDecl = NULL;
156    hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator;
157    hdlr->startDocument = xmlSAX2StartDocument;
158    hdlr->endDocument = xmlSAX2EndDocument;
159    hdlr->startElement = xmlSAX2StartElement;
160    hdlr->endElement = xmlSAX2EndElement;
161    hdlr->reference = xmlSAX2Reference;
162    hdlr->characters = xmlSAX2Characters;
163    hdlr->cdataBlock = NULL;
164    hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace;
165    hdlr->processingInstruction = NULL;
166    hdlr->comment = xmlSAX2Comment;
167    hdlr->warning = xmlParserWarning;
168    hdlr->error = xmlParserError;
169    hdlr->fatalError = xmlParserError;
170
171    hdlr->initialized = 1;
172}
173
174#endif /* LIBXML_DOCB_ENABLED */
175
176#endif /* LIBXML_SAX1_ENABLED */
177
178#define bottom_SAX
179#include "elfgcchack.h"
180#endif /* LIBXML_LEGACY_ENABLED */
181