15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * DOCBparser.c : an attempt to parse SGML Docbook documents
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This is deprecated !!!
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Code removed with release 2.6.0 it was broken.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The doc are expect to be migrated to XML DocBook
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See Copyright for the status of this software.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * daniel@veillard.com
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IN_LIBXML
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "libxml.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_DOCB_ENABLED
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlerror.h>
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/DOCBparser.h>
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbEncodeEntities:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @out:  a pointer to an array of bytes to store the result
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @outlen:  the length of @out
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @in:  a pointer to an array of UTF-8 chars
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @inlen:  the length of @in
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @quoteChar: the quote character to escape (' or ") or zero.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Take a block of UTF-8 chars in and try to convert it to an ASCII
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * plus SGML entities block of chars out.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The value of @inlen after return is the number of octets consumed
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     as the return value is positive, else unpredictable.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The value of @outlen after return is the number of octets consumed.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbEncodeEntities(unsigned char *out ATTRIBUTE_UNUSED,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   int *outlen ATTRIBUTE_UNUSED,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   const unsigned char *in ATTRIBUTE_UNUSED,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   int *inlen ATTRIBUTE_UNUSED,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   int quoteChar ATTRIBUTE_UNUSED)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbEncodeEntities() deprecated function reached\n");
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return(-1);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbParseDocument:
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt:  an SGML parser context
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * parse an SGML document (and build a tree if using the standard SAX
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * interface).
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 0, -1 in case of error. the parser context is augmented
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *                as a result of the parsing.
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbParseDocument(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbParseDocument() deprecated function reached\n");
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (xmlParseDocument(ctxt));
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbFreeParserCtxt:
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt:  an SGML parser context
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Free all the memory used by a parser context. However the parsed
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * document in ctxt->myDoc is not freed.
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbFreeParserCtxt(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbFreeParserCtxt() deprecated function reached\n");
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlFreeParserCtxt(ctxt);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbParseChunk:
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt:  an XML parser context
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @chunk:  an char array
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @size:  the size in byte of the chunk
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @terminate:  last chunk indicator
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Parse a Chunk of memory
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns zero if no error, the xmlParserErrors otherwise.
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               const char *chunk ATTRIBUTE_UNUSED,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       int size ATTRIBUTE_UNUSED,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               int terminate ATTRIBUTE_UNUSED)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbParseChunk() deprecated function reached\n");
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (xmlParseChunk(ctxt, chunk, size, terminate));
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbCreatePushParserCtxt:
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @sax:  a SAX handler
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @user_data:  The user data returned on SAX callbacks
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @chunk:  a pointer to an array of chars
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @size:  number of chars in the array
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @filename:  an optional file name or URI
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @enc:  an optional encoding
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Create a parser context for using the DocBook SGML parser in push mode
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * To allow content encoding detection, @size should be >= 4
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The value of @filename is used for fetching external entities
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and error/warning reports.
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the new parser context or NULL
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbParserCtxtPtr
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbCreatePushParserCtxt(docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         void *user_data ATTRIBUTE_UNUSED,
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         const char *chunk ATTRIBUTE_UNUSED,
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 int size ATTRIBUTE_UNUSED,
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 const char *filename ATTRIBUTE_UNUSED,
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         xmlCharEncoding enc ATTRIBUTE_UNUSED)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbParseChunk() deprecated function reached\n");
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return(xmlCreatePushParserCtxt(sax, user_data, chunk, size, filename));
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbSAXParseDoc:
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @cur:  a pointer to an array of xmlChar
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @encoding:  a free form C string describing the SGML document encoding, or NULL
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @sax:  the SAX handler block
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @userData: if using SAX, this pointer will be provided on callbacks.
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * parse an SGML in-memory document and build a tree.
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * It use the given SAX function block to handle the parsing callback.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If sax is NULL, fallback to the default DOM tree building routines.
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the resulting document tree
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbDocPtr
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                const char *encoding ATTRIBUTE_UNUSED,
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                void *userData ATTRIBUTE_UNUSED)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbParseChunk() deprecated function reached\n");
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (xmlSAXParseMemoryWithData(sax, (const char *)cur,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  xmlStrlen((const xmlChar *) cur), 0,  userData));
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbParseDoc:
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @cur:  a pointer to an array of xmlChar
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @encoding:  a free form C string describing the SGML document encoding, or NULL
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * parse an SGML in-memory document and build a tree.
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the resulting document tree
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbDocPtr
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             const char *encoding ATTRIBUTE_UNUSED)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbParseChunk() deprecated function reached\n");
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (xmlParseDoc(cur));
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbCreateFileParserCtxt:
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @filename:  the filename
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @encoding:  the SGML document encoding, or NULL
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Create a parser context for a file content.
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Automatic support for ZLIB/Compress compressed document is provided
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * by default if found at compile-time.
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the new parser context or NULL
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbParserCtxtPtr
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbCreateFileParserCtxt(const char *filename ATTRIBUTE_UNUSED,
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         const char *encoding ATTRIBUTE_UNUSED)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbCreateFileParserCtxt() deprecated function reached\n");
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (xmlCreateFileParserCtxt(filename));
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbSAXParseFile:
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @filename:  the filename
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @encoding:  a free form C string describing the SGML document encoding, or NULL
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @sax:  the SAX handler block
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @userData: if using SAX, this pointer will be provided on callbacks.
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * parse an SGML file and build a tree. Automatic support for ZLIB/Compress
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * compressed document is provided by default if found at compile-time.
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * It use the given SAX function block to handle the parsing callback.
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If sax is NULL, fallback to the default DOM tree building routines.
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the resulting document tree
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbDocPtr
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbSAXParseFile(const char *filename ATTRIBUTE_UNUSED,
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 const char *encoding ATTRIBUTE_UNUSED,
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 void *userData ATTRIBUTE_UNUSED)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbSAXParseFile() deprecated function reached\n");
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (xmlSAXParseFileWithData(sax, filename, 0, userData));
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * docbParseFile:
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @filename:  the filename
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @encoding:  a free form C string describing document encoding, or NULL
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * parse a Docbook SGML file and build a tree. Automatic support for
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ZLIB/Compress compressed document is provided by default if found
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * at compile-time.
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the resulting document tree
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbDocPtr
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)docbParseFile(const char *filename ATTRIBUTE_UNUSED,
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              const char *encoding ATTRIBUTE_UNUSED)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static int deprecated = 0;
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!deprecated) {
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        xmlGenericError(xmlGenericErrorContext,
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        "docbParseFile() deprecated function reached\n");
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        deprecated = 1;
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return (xmlParseFile(filename));
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define bottom_DOCBparser
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "elfgcchack.h"
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_DOCB_ENABLED */
306