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