1 /* libxml2 - Library for parsing XML documents
2 * Copyright (C) 2006-2019 Free Software Foundation, Inc.
3 *
4 * This file is not part of the GNU gettext program, but is used with
5 * GNU gettext.
6 *
7 * The original copyright notice is as follows:
8 */
9
10 /*
11 * Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining a copy
14 * of this software and associated documentation files (the "Software"), to deal
15 * in the Software without restriction, including without limitation the rights
16 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17 * copies of the Software, and to permit persons to whom the Software is fur-
18 * nished to do so, subject to the following conditions:
19 *
20 * The above copyright notice and this permission notice shall be included in
21 * all copies or substantial portions of the Software.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
25 * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29 * THE SOFTWARE.
30 *
31 * daniel@veillard.com
32 */
33
34 /*
35 * DOCBparser.c : an attempt to parse SGML Docbook documents
36 *
37 * This is deprecated !!!
38 * Code removed with release 2.6.0 it was broken.
39 * The doc are expect to be migrated to XML DocBook
40 */
41
42 #define IN_LIBXML
43 #include "libxml.h"
44 #ifdef LIBXML_DOCB_ENABLED
45
46 #include <libxml/xmlerror.h>
47 #include <libxml/DOCBparser.h>
48
49 /**
50 * docbEncodeEntities:
51 * @out: a pointer to an array of bytes to store the result
52 * @outlen: the length of @out
53 * @in: a pointer to an array of UTF-8 chars
54 * @inlen: the length of @in
55 * @quoteChar: the quote character to escape (' or ") or zero.
56 *
57 * Take a block of UTF-8 chars in and try to convert it to an ASCII
58 * plus SGML entities block of chars out.
59 *
60 * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
61 * The value of @inlen after return is the number of octets consumed
62 * as the return value is positive, else unpredictable.
63 * The value of @outlen after return is the number of octets consumed.
64 */
65 int
docbEncodeEntities(unsigned char * out ATTRIBUTE_UNUSED,int * outlen ATTRIBUTE_UNUSED,const unsigned char * in ATTRIBUTE_UNUSED,int * inlen ATTRIBUTE_UNUSED,int quoteChar ATTRIBUTE_UNUSED)66 docbEncodeEntities(unsigned char *out ATTRIBUTE_UNUSED,
67 int *outlen ATTRIBUTE_UNUSED,
68 const unsigned char *in ATTRIBUTE_UNUSED,
69 int *inlen ATTRIBUTE_UNUSED,
70 int quoteChar ATTRIBUTE_UNUSED)
71 {
72 static int deprecated = 0;
73
74 if (!deprecated) {
75 xmlGenericError(xmlGenericErrorContext,
76 "docbEncodeEntities() deprecated function reached\n");
77 deprecated = 1;
78 }
79 return(-1);
80 }
81
82 /**
83 * docbParseDocument:
84 * @ctxt: an SGML parser context
85 *
86 * parse an SGML document (and build a tree if using the standard SAX
87 * interface).
88 *
89 * Returns 0, -1 in case of error. the parser context is augmented
90 * as a result of the parsing.
91 */
92
93 int
docbParseDocument(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)94 docbParseDocument(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
95 {
96 static int deprecated = 0;
97
98 if (!deprecated) {
99 xmlGenericError(xmlGenericErrorContext,
100 "docbParseDocument() deprecated function reached\n");
101 deprecated = 1;
102 }
103 return (xmlParseDocument(ctxt));
104 }
105
106 /**
107 * docbFreeParserCtxt:
108 * @ctxt: an SGML parser context
109 *
110 * Free all the memory used by a parser context. However the parsed
111 * document in ctxt->myDoc is not freed.
112 */
113
114 void
docbFreeParserCtxt(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)115 docbFreeParserCtxt(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
116 {
117 static int deprecated = 0;
118
119 if (!deprecated) {
120 xmlGenericError(xmlGenericErrorContext,
121 "docbFreeParserCtxt() deprecated function reached\n");
122 deprecated = 1;
123 }
124 xmlFreeParserCtxt(ctxt);
125 }
126
127 /**
128 * docbParseChunk:
129 * @ctxt: an XML parser context
130 * @chunk: an char array
131 * @size: the size in byte of the chunk
132 * @terminate: last chunk indicator
133 *
134 * Parse a Chunk of memory
135 *
136 * Returns zero if no error, the xmlParserErrors otherwise.
137 */
138 int
docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED,const char * chunk ATTRIBUTE_UNUSED,int size ATTRIBUTE_UNUSED,int terminate ATTRIBUTE_UNUSED)139 docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
140 const char *chunk ATTRIBUTE_UNUSED,
141 int size ATTRIBUTE_UNUSED,
142 int terminate ATTRIBUTE_UNUSED)
143 {
144 static int deprecated = 0;
145
146 if (!deprecated) {
147 xmlGenericError(xmlGenericErrorContext,
148 "docbParseChunk() deprecated function reached\n");
149 deprecated = 1;
150 }
151
152 return (xmlParseChunk(ctxt, chunk, size, terminate));
153 }
154
155 /**
156 * docbCreatePushParserCtxt:
157 * @sax: a SAX handler
158 * @user_data: The user data returned on SAX callbacks
159 * @chunk: a pointer to an array of chars
160 * @size: number of chars in the array
161 * @filename: an optional file name or URI
162 * @enc: an optional encoding
163 *
164 * Create a parser context for using the DocBook SGML parser in push mode
165 * To allow content encoding detection, @size should be >= 4
166 * The value of @filename is used for fetching external entities
167 * and error/warning reports.
168 *
169 * Returns the new parser context or NULL
170 */
171 docbParserCtxtPtr
docbCreatePushParserCtxt(docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,void * user_data ATTRIBUTE_UNUSED,const char * chunk ATTRIBUTE_UNUSED,int size ATTRIBUTE_UNUSED,const char * filename ATTRIBUTE_UNUSED,xmlCharEncoding enc ATTRIBUTE_UNUSED)172 docbCreatePushParserCtxt(docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
173 void *user_data ATTRIBUTE_UNUSED,
174 const char *chunk ATTRIBUTE_UNUSED,
175 int size ATTRIBUTE_UNUSED,
176 const char *filename ATTRIBUTE_UNUSED,
177 xmlCharEncoding enc ATTRIBUTE_UNUSED)
178 {
179 static int deprecated = 0;
180
181 if (!deprecated) {
182 xmlGenericError(xmlGenericErrorContext,
183 "docbParseChunk() deprecated function reached\n");
184 deprecated = 1;
185 }
186
187 return(xmlCreatePushParserCtxt(sax, user_data, chunk, size, filename));
188 }
189
190 /**
191 * docbSAXParseDoc:
192 * @cur: a pointer to an array of xmlChar
193 * @encoding: a free form C string describing the SGML document encoding, or NULL
194 * @sax: the SAX handler block
195 * @userData: if using SAX, this pointer will be provided on callbacks.
196 *
197 * parse an SGML in-memory document and build a tree.
198 * It use the given SAX function block to handle the parsing callback.
199 * If sax is NULL, fallback to the default DOM tree building routines.
200 *
201 * Returns the resulting document tree
202 */
203
204 docbDocPtr
docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,const char * encoding ATTRIBUTE_UNUSED,docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,void * userData ATTRIBUTE_UNUSED)205 docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
206 const char *encoding ATTRIBUTE_UNUSED,
207 docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
208 void *userData ATTRIBUTE_UNUSED)
209 {
210 static int deprecated = 0;
211
212 if (!deprecated) {
213 xmlGenericError(xmlGenericErrorContext,
214 "docbParseChunk() deprecated function reached\n");
215 deprecated = 1;
216 }
217
218 return (xmlSAXParseMemoryWithData(sax, (const char *)cur,
219 xmlStrlen((const xmlChar *) cur), 0, userData));
220 }
221
222 /**
223 * docbParseDoc:
224 * @cur: a pointer to an array of xmlChar
225 * @encoding: a free form C string describing the SGML document encoding, or NULL
226 *
227 * parse an SGML in-memory document and build a tree.
228 *
229 * Returns the resulting document tree
230 */
231
232 docbDocPtr
docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,const char * encoding ATTRIBUTE_UNUSED)233 docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
234 const char *encoding ATTRIBUTE_UNUSED)
235 {
236 static int deprecated = 0;
237
238 if (!deprecated) {
239 xmlGenericError(xmlGenericErrorContext,
240 "docbParseChunk() deprecated function reached\n");
241 deprecated = 1;
242 }
243
244 return (xmlParseDoc(cur));
245 }
246
247
248 /**
249 * docbCreateFileParserCtxt:
250 * @filename: the filename
251 * @encoding: the SGML document encoding, or NULL
252 *
253 * Create a parser context for a file content.
254 * Automatic support for ZLIB/Compress compressed document is provided
255 * by default if found at compile-time.
256 *
257 * Returns the new parser context or NULL
258 */
259 docbParserCtxtPtr
docbCreateFileParserCtxt(const char * filename ATTRIBUTE_UNUSED,const char * encoding ATTRIBUTE_UNUSED)260 docbCreateFileParserCtxt(const char *filename ATTRIBUTE_UNUSED,
261 const char *encoding ATTRIBUTE_UNUSED)
262 {
263 static int deprecated = 0;
264
265 if (!deprecated) {
266 xmlGenericError(xmlGenericErrorContext,
267 "docbCreateFileParserCtxt() deprecated function reached\n");
268 deprecated = 1;
269 }
270
271 return (xmlCreateFileParserCtxt(filename));
272 }
273
274 /**
275 * docbSAXParseFile:
276 * @filename: the filename
277 * @encoding: a free form C string describing the SGML document encoding, or NULL
278 * @sax: the SAX handler block
279 * @userData: if using SAX, this pointer will be provided on callbacks.
280 *
281 * parse an SGML file and build a tree. Automatic support for ZLIB/Compress
282 * compressed document is provided by default if found at compile-time.
283 * It use the given SAX function block to handle the parsing callback.
284 * If sax is NULL, fallback to the default DOM tree building routines.
285 *
286 * Returns the resulting document tree
287 */
288
289 docbDocPtr
docbSAXParseFile(const char * filename ATTRIBUTE_UNUSED,const char * encoding ATTRIBUTE_UNUSED,docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,void * userData ATTRIBUTE_UNUSED)290 docbSAXParseFile(const char *filename ATTRIBUTE_UNUSED,
291 const char *encoding ATTRIBUTE_UNUSED,
292 docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
293 void *userData ATTRIBUTE_UNUSED)
294 {
295 static int deprecated = 0;
296
297 if (!deprecated) {
298 xmlGenericError(xmlGenericErrorContext,
299 "docbSAXParseFile() deprecated function reached\n");
300 deprecated = 1;
301 }
302
303 return (xmlSAXParseFileWithData(sax, filename, 0, userData));
304 }
305
306 /**
307 * docbParseFile:
308 * @filename: the filename
309 * @encoding: a free form C string describing document encoding, or NULL
310 *
311 * parse a Docbook SGML file and build a tree. Automatic support for
312 * ZLIB/Compress compressed document is provided by default if found
313 * at compile-time.
314 *
315 * Returns the resulting document tree
316 */
317
318 docbDocPtr
docbParseFile(const char * filename ATTRIBUTE_UNUSED,const char * encoding ATTRIBUTE_UNUSED)319 docbParseFile(const char *filename ATTRIBUTE_UNUSED,
320 const char *encoding ATTRIBUTE_UNUSED)
321 {
322 static int deprecated = 0;
323
324 if (!deprecated) {
325 xmlGenericError(xmlGenericErrorContext,
326 "docbParseFile() deprecated function reached\n");
327 deprecated = 1;
328 }
329
330 return (xmlParseFile(filename));
331 }
332 #define bottom_DOCBparser
333 #include "elfgcchack.h"
334 #endif /* LIBXML_DOCB_ENABLED */
335