13473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 2be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Summary: interface for the I/O interfaces used by the parser 3be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Description: interface for the I/O interfaces used by the parser 43473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * 5be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Copy: See Copyright for the status of this software. 63473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * 7be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Author: Daniel Veillard 83473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 93473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifndef __XML_IO_H__ 113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define __XML_IO_H__ 123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#include <stdio.h> 14f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard#include <libxml/xmlversion.h> 153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus 173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorextern "C" { 183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif 193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Those are the functions and datatypes for the parser input 223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * I/O structures. 233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 259d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 269d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputMatchCallback: 279d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI 289d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 29f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * Callback used in the I/O Input API to detect if the current handler 309d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * can provide input fonctionnalities for this resource. 319d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 329d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 1 if yes and 0 if another Input module should be used 339d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 34ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef int (XMLCALL *xmlInputMatchCallback) (char const *filename); 359d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 369d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputOpenCallback: 379d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI 389d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 399d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Input API to open the resource 409d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 419d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns an Input context or NULL in case or error 429d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 43ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename); 449d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 459d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputReadCallback: 469d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context: an Input context 479d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @buffer: the buffer to store data read 489d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @len: the length of the buffer in bytes 499d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 509d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Input API to read the resource 519d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 529d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns the number of bytes read or -1 in case of error 539d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 54ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len); 559d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 569d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlInputCloseCallback: 579d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context: an Input context 589d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 599d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Input API to close the resource 609d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 619d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 0 or -1 in case of error 629d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 63ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef int (XMLCALL *xmlInputCloseCallback) (void * context); 643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 65a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED 663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Those are the functions and datatypes for the library output 683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * I/O structures. 693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 719d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 729d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputMatchCallback: 739d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI 749d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 75f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * Callback used in the I/O Output API to detect if the current handler 769d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * can provide output fonctionnalities for this resource. 779d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 789d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 1 if yes and 0 if another Output module should be used 799d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 80ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename); 819d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 829d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputOpenCallback: 839d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @filename: the filename or URI 849d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 859d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Output API to open the resource 869d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 879d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns an Output context or NULL in case or error 889d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 89ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename); 909d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 919d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputWriteCallback: 929d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context: an Output context 939d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @buffer: the buffer of data to write 949d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @len: the length of the buffer in bytes 959d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 969d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Output API to write to the resource 979d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 989d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns the number of bytes written or -1 in case of error 999d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 100ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer, 1013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int len); 1029d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard/** 1039d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * xmlOutputCloseCallback: 1049d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * @context: an Output context 1059d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 1069d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Callback used in the I/O Output API to close the resource 1079d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * 1089d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard * Returns 0 or -1 in case of error 1099d06d300a5c4146907b3af8fcbf67d8e7d868567Daniel Veillard */ 110ffa3c74933baa45bef5e0d7f15473c38a4c3f9e8Daniel Veillardtypedef int (XMLCALL *xmlOutputCloseCallback) (void * context); 111a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#endif /* LIBXML_OUTPUT_ENABLED */ 1123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 113a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#ifdef __cplusplus 114a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard} 115a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#endif 116a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard 117a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/globals.h> 118a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/tree.h> 119a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/parser.h> 120a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#include <libxml/encoding.h> 121a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard 122a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#ifdef __cplusplus 123a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillardextern "C" { 124a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard#endif 125a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillardstruct _xmlParserInputBuffer { 126a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard void* context; 127a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard xmlInputReadCallback readcallback; 128a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard xmlInputCloseCallback closecallback; 129f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard 130a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ 131f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard 13265c7d3b2e6506283eecd19a23dcf0122fbcdac33Daniel Veillard xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */ 13365c7d3b2e6506283eecd19a23dcf0122fbcdac33Daniel Veillard xmlBufPtr raw; /* if encoder != NULL buffer for raw input */ 134c07329e2abfdaade767d0bd0268de324ba4058a2William M. Brack int compressed; /* -1=unknown, 0=not compressed, 1=compressed */ 13597bf4d02e5bdd07720e104eead52baa5ddff71fdDaniel Veillard int error; 1363671190b546760a9e10d2e683257c3a86c680816Daniel Veillard unsigned long rawconsumed;/* amount consumed from raw */ 137a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard}; 138a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard 139a8a89fe587a578bd9942f6d79d8d9258f4ad3e96Daniel Veillard 140a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED 1413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlOutputBuffer { 1423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void* context; 1433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlOutputWriteCallback writecallback; 1443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlOutputCloseCallback closecallback; 145f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard 1463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ 147f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard 14865c7d3b2e6506283eecd19a23dcf0122fbcdac33Daniel Veillard xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ 14965c7d3b2e6506283eecd19a23dcf0122fbcdac33Daniel Veillard xmlBufPtr conv; /* if encoder != NULL buffer for output */ 1503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int written; /* total number of byte written */ 15197bf4d02e5bdd07720e104eead52baa5ddff71fdDaniel Veillard int error; 1523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor}; 153a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#endif /* LIBXML_OUTPUT_ENABLED */ 1543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 1553473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 1563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Interfaces for input 1573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 158f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 159aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlCleanupInputCallbacks (void); 1603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 161aecc0dc1f58f66765d68997bb85b5c4534404c67Daniel VeillardXMLPUBFUN int XMLCALL 162aecc0dc1f58f66765d68997bb85b5c4534404c67Daniel Veillard xmlPopInputCallbacks (void); 163aecc0dc1f58f66765d68997bb85b5c4534404c67Daniel Veillard 164f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 165aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlRegisterDefaultInputCallbacks (void); 16676874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL 1673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlAllocParserInputBuffer (xmlCharEncoding enc); 1683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 16976874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL 1703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlParserInputBufferCreateFilename (const char *URI, 1713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncoding enc); 17276874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL 1733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlParserInputBufferCreateFile (FILE *file, 1743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncoding enc); 17576874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL 1763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlParserInputBufferCreateFd (int fd, 1773473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncoding enc); 17876874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL 1793473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlParserInputBufferCreateMem (const char *mem, int size, 1803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncoding enc); 18176874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL 1825335055ef698595d4a4b7e4613fd057a45166849Daniel Veillard xmlParserInputBufferCreateStatic (const char *mem, int size, 1835335055ef698595d4a4b7e4613fd057a45166849Daniel Veillard xmlCharEncoding enc); 1845335055ef698595d4a4b7e4613fd057a45166849Daniel VeillardXMLPUBFUN xmlParserInputBufferPtr XMLCALL 1853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlParserInputBufferCreateIO (xmlInputReadCallback ioread, 1863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlInputCloseCallback ioclose, 1873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *ioctx, 1883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncoding enc); 189f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 190aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlParserInputBufferRead (xmlParserInputBufferPtr in, 1913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int len); 192f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 193aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlParserInputBufferGrow (xmlParserInputBufferPtr in, 1943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int len); 195f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 196aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlParserInputBufferPush (xmlParserInputBufferPtr in, 1973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int len, 1983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const char *buf); 199f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 200aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); 201f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN char * XMLCALL 202aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlParserGetDirectory (const char *filename); 2033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 204f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 205aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc, 20656a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard xmlInputOpenCallback openFunc, 20756a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard xmlInputReadCallback readFunc, 20856a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard xmlInputCloseCallback closeFunc); 2091b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel Veillard 2101b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel VeillardxmlParserInputBufferPtr 2111b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel Veillard __xmlParserInputBufferCreateFilename(const char *URI, 21244313c0a7e1bd9021b70822a3711f5d0687ebf54Patrick Monnerat xmlCharEncoding enc); 2131b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel Veillard 214a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard#ifdef LIBXML_OUTPUT_ENABLED 2153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 2163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Interfaces for output 2173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */ 218f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 219a9cce9cd0d7aff3ec318b5d8d376da131b6aaad4Daniel Veillard xmlCleanupOutputCallbacks (void); 220f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 221aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlRegisterDefaultOutputCallbacks(void); 22276874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL 2233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder); 2243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 22576874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL 2263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlOutputBufferCreateFilename (const char *URI, 2273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncodingHandlerPtr encoder, 2283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int compression); 2293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 23076874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL 2313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlOutputBufferCreateFile (FILE *file, 2323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncodingHandlerPtr encoder); 2333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 23476874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL 2359a00fd2991433a6ce04075c91b3ac6b976bdd806Daniel Veillard xmlOutputBufferCreateBuffer (xmlBufferPtr buffer, 2369a00fd2991433a6ce04075c91b3ac6b976bdd806Daniel Veillard xmlCharEncodingHandlerPtr encoder); 2379a00fd2991433a6ce04075c91b3ac6b976bdd806Daniel Veillard 2389a00fd2991433a6ce04075c91b3ac6b976bdd806Daniel VeillardXMLPUBFUN xmlOutputBufferPtr XMLCALL 2393473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlOutputBufferCreateFd (int fd, 2403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncodingHandlerPtr encoder); 2413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 24276874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlOutputBufferPtr XMLCALL 2433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite, 2443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlOutputCloseCallback ioclose, 2453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor void *ioctx, 2463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor xmlCharEncodingHandlerPtr encoder); 2473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 248e258adecd0e19a6cfe6afa232b89aa416368820eDaniel Veillard/* Couple of APIs to get the output without digging into the buffers */ 249e258adecd0e19a6cfe6afa232b89aa416368820eDaniel VeillardXMLPUBFUN const xmlChar * XMLCALL 250e258adecd0e19a6cfe6afa232b89aa416368820eDaniel Veillard xmlOutputBufferGetContent (xmlOutputBufferPtr out); 251e258adecd0e19a6cfe6afa232b89aa416368820eDaniel VeillardXMLPUBFUN size_t XMLCALL 252e258adecd0e19a6cfe6afa232b89aa416368820eDaniel Veillard xmlOutputBufferGetSize (xmlOutputBufferPtr out); 253e258adecd0e19a6cfe6afa232b89aa416368820eDaniel Veillard 254f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 255aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlOutputBufferWrite (xmlOutputBufferPtr out, 2563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor int len, 2573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const char *buf); 258f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 259aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlOutputBufferWriteString (xmlOutputBufferPtr out, 2603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor const char *str); 261f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 2625d1a4d81bf16fe341017f46bc1f102bdf72778faDaniel Veillard xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, 263ee8960bcabd65d2e5d32b29322525562e6e0196dDaniel Veillard const xmlChar *str, 264ee8960bcabd65d2e5d32b29322525562e6e0196dDaniel Veillard xmlCharEncodingOutputFunc escaping); 2653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 266f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 267aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlOutputBufferFlush (xmlOutputBufferPtr out); 268f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 269aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlOutputBufferClose (xmlOutputBufferPtr out); 2703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 271f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 272aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, 27356a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard xmlOutputOpenCallback openFunc, 27456a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard xmlOutputWriteCallback writeFunc, 27556a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard xmlOutputCloseCallback closeFunc); 2761b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel Veillard 2771b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel VeillardxmlOutputBufferPtr 2781b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel Veillard __xmlOutputBufferCreateFilename(const char *URI, 2791b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel Veillard xmlCharEncodingHandlerPtr encoder, 2801b243b4fc9638312287fb5b4dd3ea209bf42bf6aDaniel Veillard int compression); 2813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 282f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard#ifdef LIBXML_HTTP_ENABLED 28321e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack/* This function only exists if HTTP support built into the library */ 284f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void XMLCALL 285aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlRegisterHTTPPostCallbacks (void ); 28621e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack#endif /* LIBXML_HTTP_ENABLED */ 287f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard 28821e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack#endif /* LIBXML_OUTPUT_ENABLED */ 28921e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack 290a840b69261c44760d45370bef989c77f84727406Daniel VeillardXMLPUBFUN xmlParserInputPtr XMLCALL 291a840b69261c44760d45370bef989c77f84727406Daniel Veillard xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, 292a840b69261c44760d45370bef989c77f84727406Daniel Veillard xmlParserInputPtr ret); 293f012a64d13d85d53eac0d4d6625508109e7c9e9dDaniel Veillard 2943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/* 2958bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard * A predefined entity loader disabling network accesses 2968bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard */ 297f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN xmlParserInputPtr XMLCALL 298aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlNoNetExternalEntityLoader (const char *URL, 2998bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard const char *ID, 3008bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard xmlParserCtxtPtr ctxt); 3018bdb91dd5c6c6c89cd1668ba78b1048239ca6ca6Daniel Veillard 302f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard/* 303f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * xmlNormalizeWindowsPath is obsolete, don't use it. 3045f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic * Check xmlCanonicPath in uri.h for a better alternative. 3055f9fada355da8d4120a526ecea513f85e69755eeIgor Zlatkovic */ 306f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN xmlChar * XMLCALL 307aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlNormalizeWindowsPath (const xmlChar *path); 3085aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin 309f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 310aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic xmlCheckFilename (const char *path); 3115aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/** 312f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * Default 'file://' protocol callbacks 3135aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */ 314f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 315f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlFileMatch (const char *filename); 316f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 317f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlFileOpen (const char *filename); 318f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 319f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlFileRead (void * context, 320f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard char * buffer, 3215aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin int len); 322f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 323f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlFileClose (void * context); 3245aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin 3255aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/** 326f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * Default 'http://' protocol callbacks 3275aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */ 3285aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#ifdef LIBXML_HTTP_ENABLED 329f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 330f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOHTTPMatch (const char *filename); 331f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 332f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOHTTPOpen (const char *filename); 33321e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack#ifdef LIBXML_OUTPUT_ENABLED 334f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 33521e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack xmlIOHTTPOpenW (const char * post_uri, 33621e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack int compression ); 33721e4ef20f64ebd740ebac0ead5d85a5631d2db5eWilliam M. Brack#endif /* LIBXML_OUTPUT_ENABLED */ 338f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 339f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOHTTPRead (void * context, 340f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard char * buffer, 3415aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin int len); 342f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 343f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOHTTPClose (void * context); 3445aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#endif /* LIBXML_HTTP_ENABLED */ 3455aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin 3465aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin/** 347f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard * Default 'ftp://' protocol callbacks 3485aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin */ 349f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard#ifdef LIBXML_FTP_ENABLED 350f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 351f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOFTPMatch (const char *filename); 352f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN void * XMLCALL 353f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOFTPOpen (const char *filename); 354f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 355f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOFTPRead (void * context, 356f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard char * buffer, 3575aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin int len); 358f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel VeillardXMLPUBFUN int XMLCALL 359f8e3db0445a1bc8cfe3f77326b07ec161482caa2Daniel Veillard xmlIOFTPClose (void * context); 3605aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin#endif /* LIBXML_FTP_ENABLED */ 3615aac8b85dd1eabdfac7ed6fe181477830149531aAleksey Sanin 3623473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus 3633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} 3643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif 3653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor 3663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif /* __XML_IO_H__ */ 367