blob: f12511b9e8acb4a27be23396c0b6cd7a2f8d9f74 [file] [log] [blame]
Daniel Veillardeae522a2001-04-23 13:41:34 +00001/*
2 * DOCBparser.c : an attempt to parse SGML Docbook documents
3 *
Daniel Veillard877a7bd2003-09-13 00:16:32 +00004 * This is deprecated !!!
5 * Code removed with release 2.6.0 it was broken.
Daniel Veillard3648fcb2003-10-01 12:21:31 +00006 * The doc are expect to be migrated to XML DocBook
Daniel Veillarde95e2392001-06-06 10:46:28 +00007 *
Daniel Veillardeae522a2001-04-23 13:41:34 +00008 * See Copyright for the status of this software.
9 *
Daniel Veillardc5d64342001-06-24 12:13:24 +000010 * daniel@veillard.com
Daniel Veillardeae522a2001-04-23 13:41:34 +000011 */
12
Daniel Veillard34ce8be2002-03-18 19:37:11 +000013#define IN_LIBXML
Daniel Veillardeae522a2001-04-23 13:41:34 +000014#include "libxml.h"
15#ifdef LIBXML_DOCB_ENABLED
16
Daniel Veillardeae522a2001-04-23 13:41:34 +000017#include <libxml/xmlerror.h>
18#include <libxml/DOCBparser.h>
Daniel Veillardeae522a2001-04-23 13:41:34 +000019
20/**
21 * docbEncodeEntities:
22 * @out: a pointer to an array of bytes to store the result
23 * @outlen: the length of @out
24 * @in: a pointer to an array of UTF-8 chars
25 * @inlen: the length of @in
26 * @quoteChar: the quote character to escape (' or ") or zero.
27 *
28 * Take a block of UTF-8 chars in and try to convert it to an ASCII
29 * plus SGML entities block of chars out.
30 *
31 * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
32 * The value of @inlen after return is the number of octets consumed
Daniel Veillardcbaf3992001-12-31 16:16:02 +000033 * as the return value is positive, else unpredictable.
Daniel Veillardeae522a2001-04-23 13:41:34 +000034 * The value of @outlen after return is the number of octets consumed.
35 */
36int
Daniel Veillard877a7bd2003-09-13 00:16:32 +000037docbEncodeEntities(unsigned char *out ATTRIBUTE_UNUSED,
38 int *outlen ATTRIBUTE_UNUSED,
39 const unsigned char *in ATTRIBUTE_UNUSED,
40 int *inlen ATTRIBUTE_UNUSED,
41 int quoteChar ATTRIBUTE_UNUSED)
Daniel Veillard84666b32001-06-11 17:31:08 +000042{
Daniel Veillard877a7bd2003-09-13 00:16:32 +000043 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +000044
Daniel Veillard877a7bd2003-09-13 00:16:32 +000045 if (!deprecated) {
46 xmlGenericError(xmlGenericErrorContext,
47 "docbEncodeEntities() deprecated function reached\n");
48 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +000049 }
Daniel Veillard877a7bd2003-09-13 00:16:32 +000050 return(-1);
Daniel Veillardeae522a2001-04-23 13:41:34 +000051}
52
53/**
Daniel Veillard01c13b52002-12-10 15:19:08 +000054 * docbParseDocument:
Daniel Veillardeae522a2001-04-23 13:41:34 +000055 * @ctxt: an SGML parser context
Daniel Veillardf8e3db02012-09-11 13:26:36 +080056 *
Daniel Veillardeae522a2001-04-23 13:41:34 +000057 * parse an SGML document (and build a tree if using the standard SAX
58 * interface).
59 *
60 * Returns 0, -1 in case of error. the parser context is augmented
61 * as a result of the parsing.
62 */
63
64int
Daniel Veillard877a7bd2003-09-13 00:16:32 +000065docbParseDocument(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
Daniel Veillardeae522a2001-04-23 13:41:34 +000066{
Daniel Veillard877a7bd2003-09-13 00:16:32 +000067 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +000068
Daniel Veillard877a7bd2003-09-13 00:16:32 +000069 if (!deprecated) {
Daniel Veillardeae522a2001-04-23 13:41:34 +000070 xmlGenericError(xmlGenericErrorContext,
Daniel Veillard877a7bd2003-09-13 00:16:32 +000071 "docbParseDocument() deprecated function reached\n");
72 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +000073 }
Daniel Veillard3648fcb2003-10-01 12:21:31 +000074 return (xmlParseDocument(ctxt));
Daniel Veillardeae522a2001-04-23 13:41:34 +000075}
76
77/**
78 * docbFreeParserCtxt:
79 * @ctxt: an SGML parser context
80 *
81 * Free all the memory used by a parser context. However the parsed
82 * document in ctxt->myDoc is not freed.
83 */
84
85void
Daniel Veillard877a7bd2003-09-13 00:16:32 +000086docbFreeParserCtxt(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
Daniel Veillardeae522a2001-04-23 13:41:34 +000087{
Daniel Veillard877a7bd2003-09-13 00:16:32 +000088 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +000089
Daniel Veillard877a7bd2003-09-13 00:16:32 +000090 if (!deprecated) {
91 xmlGenericError(xmlGenericErrorContext,
92 "docbFreeParserCtxt() deprecated function reached\n");
93 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +000094 }
Daniel Veillard3648fcb2003-10-01 12:21:31 +000095 xmlFreeParserCtxt(ctxt);
Daniel Veillardeae522a2001-04-23 13:41:34 +000096}
97
98/**
99 * docbParseChunk:
100 * @ctxt: an XML parser context
101 * @chunk: an char array
102 * @size: the size in byte of the chunk
103 * @terminate: last chunk indicator
104 *
105 * Parse a Chunk of memory
106 *
107 * Returns zero if no error, the xmlParserErrors otherwise.
108 */
109int
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000110docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
111 const char *chunk ATTRIBUTE_UNUSED,
112 int size ATTRIBUTE_UNUSED,
113 int terminate ATTRIBUTE_UNUSED)
114{
115 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000116
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000117 if (!deprecated) {
118 xmlGenericError(xmlGenericErrorContext,
119 "docbParseChunk() deprecated function reached\n");
120 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000121 }
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000122
Daniel Veillard3648fcb2003-10-01 12:21:31 +0000123 return (xmlParseChunk(ctxt, chunk, size, terminate));
Daniel Veillardeae522a2001-04-23 13:41:34 +0000124}
125
Daniel Veillardeae522a2001-04-23 13:41:34 +0000126/**
Daniel Veillard01c13b52002-12-10 15:19:08 +0000127 * docbCreatePushParserCtxt:
Daniel Veillardeae522a2001-04-23 13:41:34 +0000128 * @sax: a SAX handler
129 * @user_data: The user data returned on SAX callbacks
130 * @chunk: a pointer to an array of chars
131 * @size: number of chars in the array
132 * @filename: an optional file name or URI
133 * @enc: an optional encoding
134 *
135 * Create a parser context for using the DocBook SGML parser in push mode
136 * To allow content encoding detection, @size should be >= 4
137 * The value of @filename is used for fetching external entities
138 * and error/warning reports.
139 *
140 * Returns the new parser context or NULL
141 */
142docbParserCtxtPtr
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000143docbCreatePushParserCtxt(docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
144 void *user_data ATTRIBUTE_UNUSED,
145 const char *chunk ATTRIBUTE_UNUSED,
146 int size ATTRIBUTE_UNUSED,
147 const char *filename ATTRIBUTE_UNUSED,
148 xmlCharEncoding enc ATTRIBUTE_UNUSED)
149{
150 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000151
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000152 if (!deprecated) {
153 xmlGenericError(xmlGenericErrorContext,
154 "docbParseChunk() deprecated function reached\n");
155 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000156 }
157
Daniel Veillard3648fcb2003-10-01 12:21:31 +0000158 return(xmlCreatePushParserCtxt(sax, user_data, chunk, size, filename));
Daniel Veillardeae522a2001-04-23 13:41:34 +0000159}
160
161/**
Daniel Veillard01c13b52002-12-10 15:19:08 +0000162 * docbSAXParseDoc:
Daniel Veillardeae522a2001-04-23 13:41:34 +0000163 * @cur: a pointer to an array of xmlChar
164 * @encoding: a free form C string describing the SGML document encoding, or NULL
165 * @sax: the SAX handler block
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800166 * @userData: if using SAX, this pointer will be provided on callbacks.
Daniel Veillardeae522a2001-04-23 13:41:34 +0000167 *
168 * parse an SGML in-memory document and build a tree.
169 * It use the given SAX function block to handle the parsing callback.
170 * If sax is NULL, fallback to the default DOM tree building routines.
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800171 *
Daniel Veillardeae522a2001-04-23 13:41:34 +0000172 * Returns the resulting document tree
173 */
174
175docbDocPtr
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000176docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
177 const char *encoding ATTRIBUTE_UNUSED,
178 docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
179 void *userData ATTRIBUTE_UNUSED)
180{
181 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000182
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000183 if (!deprecated) {
184 xmlGenericError(xmlGenericErrorContext,
185 "docbParseChunk() deprecated function reached\n");
186 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000187 }
188
Daniel Veillard3648fcb2003-10-01 12:21:31 +0000189 return (xmlSAXParseMemoryWithData(sax, (const char *)cur,
190 xmlStrlen((const xmlChar *) cur), 0, userData));
Daniel Veillardeae522a2001-04-23 13:41:34 +0000191}
192
193/**
Daniel Veillard01c13b52002-12-10 15:19:08 +0000194 * docbParseDoc:
Daniel Veillardeae522a2001-04-23 13:41:34 +0000195 * @cur: a pointer to an array of xmlChar
196 * @encoding: a free form C string describing the SGML document encoding, or NULL
197 *
198 * parse an SGML in-memory document and build a tree.
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800199 *
Daniel Veillardeae522a2001-04-23 13:41:34 +0000200 * Returns the resulting document tree
201 */
202
203docbDocPtr
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000204docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
205 const char *encoding ATTRIBUTE_UNUSED)
206{
207 static int deprecated = 0;
208
209 if (!deprecated) {
210 xmlGenericError(xmlGenericErrorContext,
211 "docbParseChunk() deprecated function reached\n");
212 deprecated = 1;
213 }
214
Daniel Veillard3648fcb2003-10-01 12:21:31 +0000215 return (xmlParseDoc(cur));
Daniel Veillardeae522a2001-04-23 13:41:34 +0000216}
217
218
219/**
Daniel Veillard01c13b52002-12-10 15:19:08 +0000220 * docbCreateFileParserCtxt:
Daniel Veillardeae522a2001-04-23 13:41:34 +0000221 * @filename: the filename
Daniel Veillard1034da22001-04-25 19:06:28 +0000222 * @encoding: the SGML document encoding, or NULL
Daniel Veillardeae522a2001-04-23 13:41:34 +0000223 *
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800224 * Create a parser context for a file content.
Daniel Veillardeae522a2001-04-23 13:41:34 +0000225 * Automatic support for ZLIB/Compress compressed document is provided
226 * by default if found at compile-time.
227 *
228 * Returns the new parser context or NULL
229 */
230docbParserCtxtPtr
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000231docbCreateFileParserCtxt(const char *filename ATTRIBUTE_UNUSED,
232 const char *encoding ATTRIBUTE_UNUSED)
Daniel Veillardeae522a2001-04-23 13:41:34 +0000233{
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000234 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000235
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000236 if (!deprecated) {
237 xmlGenericError(xmlGenericErrorContext,
238 "docbCreateFileParserCtxt() deprecated function reached\n");
239 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000240 }
Daniel Veillardeae522a2001-04-23 13:41:34 +0000241
Daniel Veillard3648fcb2003-10-01 12:21:31 +0000242 return (xmlCreateFileParserCtxt(filename));
Daniel Veillardeae522a2001-04-23 13:41:34 +0000243}
244
245/**
Daniel Veillard01c13b52002-12-10 15:19:08 +0000246 * docbSAXParseFile:
Daniel Veillardeae522a2001-04-23 13:41:34 +0000247 * @filename: the filename
248 * @encoding: a free form C string describing the SGML document encoding, or NULL
249 * @sax: the SAX handler block
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800250 * @userData: if using SAX, this pointer will be provided on callbacks.
Daniel Veillardeae522a2001-04-23 13:41:34 +0000251 *
252 * parse an SGML file and build a tree. Automatic support for ZLIB/Compress
253 * compressed document is provided by default if found at compile-time.
254 * It use the given SAX function block to handle the parsing callback.
255 * If sax is NULL, fallback to the default DOM tree building routines.
256 *
257 * Returns the resulting document tree
258 */
259
260docbDocPtr
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000261docbSAXParseFile(const char *filename ATTRIBUTE_UNUSED,
262 const char *encoding ATTRIBUTE_UNUSED,
263 docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
264 void *userData ATTRIBUTE_UNUSED)
265{
266 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000267
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000268 if (!deprecated) {
269 xmlGenericError(xmlGenericErrorContext,
270 "docbSAXParseFile() deprecated function reached\n");
271 deprecated = 1;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000272 }
273
Daniel Veillard3648fcb2003-10-01 12:21:31 +0000274 return (xmlSAXParseFileWithData(sax, filename, 0, userData));
Daniel Veillardeae522a2001-04-23 13:41:34 +0000275}
276
277/**
Daniel Veillard01c13b52002-12-10 15:19:08 +0000278 * docbParseFile:
Daniel Veillardeae522a2001-04-23 13:41:34 +0000279 * @filename: the filename
280 * @encoding: a free form C string describing document encoding, or NULL
281 *
282 * parse a Docbook SGML file and build a tree. Automatic support for
283 * ZLIB/Compress compressed document is provided by default if found
284 * at compile-time.
285 *
286 * Returns the resulting document tree
287 */
288
289docbDocPtr
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000290docbParseFile(const char *filename ATTRIBUTE_UNUSED,
291 const char *encoding ATTRIBUTE_UNUSED)
292{
293 static int deprecated = 0;
Daniel Veillardeae522a2001-04-23 13:41:34 +0000294
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000295 if (!deprecated) {
296 xmlGenericError(xmlGenericErrorContext,
297 "docbParseFile() deprecated function reached\n");
298 deprecated = 1;
299 }
300
Daniel Veillard3648fcb2003-10-01 12:21:31 +0000301 return (xmlParseFile(filename));
Daniel Veillard877a7bd2003-09-13 00:16:32 +0000302}
Daniel Veillard5d4644e2005-04-01 13:11:58 +0000303#define bottom_DOCBparser
304#include "elfgcchack.h"
Daniel Veillardeae522a2001-04-23 13:41:34 +0000305#endif /* LIBXML_DOCB_ENABLED */