306 lines
8.6 KiB
C
306 lines
8.6 KiB
C
|
/*
|
||
|
* DOCBparser.c : an attempt to parse SGML Docbook documents
|
||
|
*
|
||
|
* This is deprecated !!!
|
||
|
* Code removed with release 2.6.0 it was broken.
|
||
|
* The doc are expect to be migrated to XML DocBook
|
||
|
*
|
||
|
* See Copyright for the status of this software.
|
||
|
*
|
||
|
* daniel@veillard.com
|
||
|
*/
|
||
|
|
||
|
#define IN_LIBXML
|
||
|
#include "libxml.h"
|
||
|
#ifdef LIBXML_DOCB_ENABLED
|
||
|
|
||
|
#include <libxml/xmlerror.h>
|
||
|
#include <libxml/DOCBparser.h>
|
||
|
|
||
|
/**
|
||
|
* docbEncodeEntities:
|
||
|
* @out: a pointer to an array of bytes to store the result
|
||
|
* @outlen: the length of @out
|
||
|
* @in: a pointer to an array of UTF-8 chars
|
||
|
* @inlen: the length of @in
|
||
|
* @quoteChar: the quote character to escape (' or ") or zero.
|
||
|
*
|
||
|
* Take a block of UTF-8 chars in and try to convert it to an ASCII
|
||
|
* plus SGML entities block of chars out.
|
||
|
*
|
||
|
* Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
|
||
|
* The value of @inlen after return is the number of octets consumed
|
||
|
* as the return value is positive, else unpredictable.
|
||
|
* The value of @outlen after return is the number of octets consumed.
|
||
|
*/
|
||
|
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)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbEncodeEntities() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
return(-1);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbParseDocument:
|
||
|
* @ctxt: an SGML parser context
|
||
|
*
|
||
|
* parse an SGML document (and build a tree if using the standard SAX
|
||
|
* interface).
|
||
|
*
|
||
|
* Returns 0, -1 in case of error. the parser context is augmented
|
||
|
* as a result of the parsing.
|
||
|
*/
|
||
|
|
||
|
int
|
||
|
docbParseDocument(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbParseDocument() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
return (xmlParseDocument(ctxt));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbFreeParserCtxt:
|
||
|
* @ctxt: an SGML parser context
|
||
|
*
|
||
|
* Free all the memory used by a parser context. However the parsed
|
||
|
* document in ctxt->myDoc is not freed.
|
||
|
*/
|
||
|
|
||
|
void
|
||
|
docbFreeParserCtxt(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbFreeParserCtxt() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
xmlFreeParserCtxt(ctxt);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbParseChunk:
|
||
|
* @ctxt: an XML parser context
|
||
|
* @chunk: an char array
|
||
|
* @size: the size in byte of the chunk
|
||
|
* @terminate: last chunk indicator
|
||
|
*
|
||
|
* Parse a Chunk of memory
|
||
|
*
|
||
|
* Returns zero if no error, the xmlParserErrors otherwise.
|
||
|
*/
|
||
|
int
|
||
|
docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
|
||
|
const char *chunk ATTRIBUTE_UNUSED,
|
||
|
int size ATTRIBUTE_UNUSED,
|
||
|
int terminate ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbParseChunk() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
|
||
|
return (xmlParseChunk(ctxt, chunk, size, terminate));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbCreatePushParserCtxt:
|
||
|
* @sax: a SAX handler
|
||
|
* @user_data: The user data returned on SAX callbacks
|
||
|
* @chunk: a pointer to an array of chars
|
||
|
* @size: number of chars in the array
|
||
|
* @filename: an optional file name or URI
|
||
|
* @enc: an optional encoding
|
||
|
*
|
||
|
* Create a parser context for using the DocBook SGML parser in push mode
|
||
|
* To allow content encoding detection, @size should be >= 4
|
||
|
* The value of @filename is used for fetching external entities
|
||
|
* and error/warning reports.
|
||
|
*
|
||
|
* Returns the new parser context or NULL
|
||
|
*/
|
||
|
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)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbParseChunk() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
|
||
|
return(xmlCreatePushParserCtxt(sax, user_data, chunk, size, filename));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbSAXParseDoc:
|
||
|
* @cur: a pointer to an array of xmlChar
|
||
|
* @encoding: a free form C string describing the SGML document encoding, or NULL
|
||
|
* @sax: the SAX handler block
|
||
|
* @userData: if using SAX, this pointer will be provided on callbacks.
|
||
|
*
|
||
|
* parse an SGML in-memory document and build a tree.
|
||
|
* It use the given SAX function block to handle the parsing callback.
|
||
|
* If sax is NULL, fallback to the default DOM tree building routines.
|
||
|
*
|
||
|
* Returns the resulting document tree
|
||
|
*/
|
||
|
|
||
|
docbDocPtr
|
||
|
docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
|
||
|
const char *encoding ATTRIBUTE_UNUSED,
|
||
|
docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
|
||
|
void *userData ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbParseChunk() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
|
||
|
return (xmlSAXParseMemoryWithData(sax, (const char *)cur,
|
||
|
xmlStrlen((const xmlChar *) cur), 0, userData));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbParseDoc:
|
||
|
* @cur: a pointer to an array of xmlChar
|
||
|
* @encoding: a free form C string describing the SGML document encoding, or NULL
|
||
|
*
|
||
|
* parse an SGML in-memory document and build a tree.
|
||
|
*
|
||
|
* Returns the resulting document tree
|
||
|
*/
|
||
|
|
||
|
docbDocPtr
|
||
|
docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
|
||
|
const char *encoding ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbParseChunk() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
|
||
|
return (xmlParseDoc(cur));
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* docbCreateFileParserCtxt:
|
||
|
* @filename: the filename
|
||
|
* @encoding: the SGML document encoding, or NULL
|
||
|
*
|
||
|
* Create a parser context for a file content.
|
||
|
* Automatic support for ZLIB/Compress compressed document is provided
|
||
|
* by default if found at compile-time.
|
||
|
*
|
||
|
* Returns the new parser context or NULL
|
||
|
*/
|
||
|
docbParserCtxtPtr
|
||
|
docbCreateFileParserCtxt(const char *filename ATTRIBUTE_UNUSED,
|
||
|
const char *encoding ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbCreateFileParserCtxt() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
|
||
|
return (xmlCreateFileParserCtxt(filename));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbSAXParseFile:
|
||
|
* @filename: the filename
|
||
|
* @encoding: a free form C string describing the SGML document encoding, or NULL
|
||
|
* @sax: the SAX handler block
|
||
|
* @userData: if using SAX, this pointer will be provided on callbacks.
|
||
|
*
|
||
|
* parse an SGML file and build a tree. Automatic support for ZLIB/Compress
|
||
|
* compressed document is provided by default if found at compile-time.
|
||
|
* It use the given SAX function block to handle the parsing callback.
|
||
|
* If sax is NULL, fallback to the default DOM tree building routines.
|
||
|
*
|
||
|
* Returns the resulting document tree
|
||
|
*/
|
||
|
|
||
|
docbDocPtr
|
||
|
docbSAXParseFile(const char *filename ATTRIBUTE_UNUSED,
|
||
|
const char *encoding ATTRIBUTE_UNUSED,
|
||
|
docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
|
||
|
void *userData ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbSAXParseFile() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
|
||
|
return (xmlSAXParseFileWithData(sax, filename, 0, userData));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* docbParseFile:
|
||
|
* @filename: the filename
|
||
|
* @encoding: a free form C string describing document encoding, or NULL
|
||
|
*
|
||
|
* parse a Docbook SGML file and build a tree. Automatic support for
|
||
|
* ZLIB/Compress compressed document is provided by default if found
|
||
|
* at compile-time.
|
||
|
*
|
||
|
* Returns the resulting document tree
|
||
|
*/
|
||
|
|
||
|
docbDocPtr
|
||
|
docbParseFile(const char *filename ATTRIBUTE_UNUSED,
|
||
|
const char *encoding ATTRIBUTE_UNUSED)
|
||
|
{
|
||
|
static int deprecated = 0;
|
||
|
|
||
|
if (!deprecated) {
|
||
|
xmlGenericError(xmlGenericErrorContext,
|
||
|
"docbParseFile() deprecated function reached\n");
|
||
|
deprecated = 1;
|
||
|
}
|
||
|
|
||
|
return (xmlParseFile(filename));
|
||
|
}
|
||
|
#define bottom_DOCBparser
|
||
|
#include "elfgcchack.h"
|
||
|
#endif /* LIBXML_DOCB_ENABLED */
|