Home | History | Annotate | Download | only in libxml
      1 /*
      2  * Summary: interface for the I/O interfaces used by the parser
      3  * Description: interface for the I/O interfaces used by the parser
      4  *
      5  * Copy: See Copyright for the status of this software.
      6  *
      7  * Author: Daniel Veillard
      8  */
      9 
     10 #ifndef __XML_IO_H__
     11 #define __XML_IO_H__
     12 
     13 #include <stdio.h>
     14 #include <libxml/xmlversion.h>
     15 
     16 #ifdef __cplusplus
     17 extern "C" {
     18 #endif
     19 
     20 /*
     21  * Those are the functions and datatypes for the parser input
     22  * I/O structures.
     23  */
     24 
     25 /**
     26  * xmlInputMatchCallback:
     27  * @filename: the filename or URI
     28  *
     29  * Callback used in the I/O Input API to detect if the current handler
     30  * can provide input fonctionnalities for this resource.
     31  *
     32  * Returns 1 if yes and 0 if another Input module should be used
     33  */
     34 typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename);
     35 /**
     36  * xmlInputOpenCallback:
     37  * @filename: the filename or URI
     38  *
     39  * Callback used in the I/O Input API to open the resource
     40  *
     41  * Returns an Input context or NULL in case or error
     42  */
     43 typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename);
     44 /**
     45  * xmlInputReadCallback:
     46  * @context:  an Input context
     47  * @buffer:  the buffer to store data read
     48  * @len:  the length of the buffer in bytes
     49  *
     50  * Callback used in the I/O Input API to read the resource
     51  *
     52  * Returns the number of bytes read or -1 in case of error
     53  */
     54 typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len);
     55 /**
     56  * xmlInputCloseCallback:
     57  * @context:  an Input context
     58  *
     59  * Callback used in the I/O Input API to close the resource
     60  *
     61  * Returns 0 or -1 in case of error
     62  */
     63 typedef int (XMLCALL *xmlInputCloseCallback) (void * context);
     64 
     65 #ifdef LIBXML_OUTPUT_ENABLED
     66 /*
     67  * Those are the functions and datatypes for the library output
     68  * I/O structures.
     69  */
     70 
     71 /**
     72  * xmlOutputMatchCallback:
     73  * @filename: the filename or URI
     74  *
     75  * Callback used in the I/O Output API to detect if the current handler
     76  * can provide output fonctionnalities for this resource.
     77  *
     78  * Returns 1 if yes and 0 if another Output module should be used
     79  */
     80 typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename);
     81 /**
     82  * xmlOutputOpenCallback:
     83  * @filename: the filename or URI
     84  *
     85  * Callback used in the I/O Output API to open the resource
     86  *
     87  * Returns an Output context or NULL in case or error
     88  */
     89 typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename);
     90 /**
     91  * xmlOutputWriteCallback:
     92  * @context:  an Output context
     93  * @buffer:  the buffer of data to write
     94  * @len:  the length of the buffer in bytes
     95  *
     96  * Callback used in the I/O Output API to write to the resource
     97  *
     98  * Returns the number of bytes written or -1 in case of error
     99  */
    100 typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer,
    101                                        int len);
    102 /**
    103  * xmlOutputCloseCallback:
    104  * @context:  an Output context
    105  *
    106  * Callback used in the I/O Output API to close the resource
    107  *
    108  * Returns 0 or -1 in case of error
    109  */
    110 typedef int (XMLCALL *xmlOutputCloseCallback) (void * context);
    111 #endif /* LIBXML_OUTPUT_ENABLED */
    112 
    113 #ifdef __cplusplus
    114 }
    115 #endif
    116 
    117 #include <libxml/globals.h>
    118 #include <libxml/tree.h>
    119 #include <libxml/parser.h>
    120 #include <libxml/encoding.h>
    121 
    122 #ifdef __cplusplus
    123 extern "C" {
    124 #endif
    125 struct _xmlParserInputBuffer {
    126     void*                  context;
    127     xmlInputReadCallback   readcallback;
    128     xmlInputCloseCallback  closecallback;
    129 
    130     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
    131 
    132     xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 */
    133     xmlBufferPtr raw;       /* if encoder != NULL buffer for raw input */
    134     int	compressed;	    /* -1=unknown, 0=not compressed, 1=compressed */
    135     int error;
    136     unsigned long rawconsumed;/* amount consumed from raw */
    137 };
    138 
    139 
    140 #ifdef LIBXML_OUTPUT_ENABLED
    141 struct _xmlOutputBuffer {
    142     void*                   context;
    143     xmlOutputWriteCallback  writecallback;
    144     xmlOutputCloseCallback  closecallback;
    145 
    146     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
    147 
    148     xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
    149     xmlBufferPtr conv;      /* if encoder != NULL buffer for output */
    150     int written;            /* total number of byte written */
    151     int error;
    152 };
    153 #endif /* LIBXML_OUTPUT_ENABLED */
    154 
    155 /*
    156  * Interfaces for input
    157  */
    158 XMLPUBFUN void XMLCALL
    159 	xmlCleanupInputCallbacks		(void);
    160 
    161 XMLPUBFUN int XMLCALL
    162 	xmlPopInputCallbacks			(void);
    163 
    164 XMLPUBFUN void XMLCALL
    165 	xmlRegisterDefaultInputCallbacks	(void);
    166 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    167 	xmlAllocParserInputBuffer		(xmlCharEncoding enc);
    168 
    169 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    170 	xmlParserInputBufferCreateFilename	(const char *URI,
    171                                                  xmlCharEncoding enc);
    172 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    173 	xmlParserInputBufferCreateFile		(FILE *file,
    174                                                  xmlCharEncoding enc);
    175 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    176 	xmlParserInputBufferCreateFd		(int fd,
    177 	                                         xmlCharEncoding enc);
    178 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    179 	xmlParserInputBufferCreateMem		(const char *mem, int size,
    180 	                                         xmlCharEncoding enc);
    181 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    182 	xmlParserInputBufferCreateStatic	(const char *mem, int size,
    183 	                                         xmlCharEncoding enc);
    184 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
    185 	xmlParserInputBufferCreateIO		(xmlInputReadCallback   ioread,
    186 						 xmlInputCloseCallback  ioclose,
    187 						 void *ioctx,
    188 	                                         xmlCharEncoding enc);
    189 XMLPUBFUN int XMLCALL
    190 	xmlParserInputBufferRead		(xmlParserInputBufferPtr in,
    191 						 int len);
    192 XMLPUBFUN int XMLCALL
    193 	xmlParserInputBufferGrow		(xmlParserInputBufferPtr in,
    194 						 int len);
    195 XMLPUBFUN int XMLCALL
    196 	xmlParserInputBufferPush		(xmlParserInputBufferPtr in,
    197 						 int len,
    198 						 const char *buf);
    199 XMLPUBFUN void XMLCALL
    200 	xmlFreeParserInputBuffer		(xmlParserInputBufferPtr in);
    201 XMLPUBFUN char * XMLCALL
    202 	xmlParserGetDirectory			(const char *filename);
    203 
    204 XMLPUBFUN int XMLCALL
    205 	xmlRegisterInputCallbacks		(xmlInputMatchCallback matchFunc,
    206 						 xmlInputOpenCallback openFunc,
    207 						 xmlInputReadCallback readFunc,
    208 						 xmlInputCloseCallback closeFunc);
    209 
    210 xmlParserInputBufferPtr
    211 	__xmlParserInputBufferCreateFilename(const char *URI,
    212 										xmlCharEncoding enc);
    213 
    214 #ifdef LIBXML_OUTPUT_ENABLED
    215 /*
    216  * Interfaces for output
    217  */
    218 XMLPUBFUN void XMLCALL
    219 	xmlCleanupOutputCallbacks		(void);
    220 XMLPUBFUN void XMLCALL
    221 	xmlRegisterDefaultOutputCallbacks(void);
    222 XMLPUBFUN xmlOutputBufferPtr XMLCALL
    223 	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
    224 
    225 XMLPUBFUN xmlOutputBufferPtr XMLCALL
    226 	xmlOutputBufferCreateFilename	(const char *URI,
    227 					 xmlCharEncodingHandlerPtr encoder,
    228 					 int compression);
    229 
    230 XMLPUBFUN xmlOutputBufferPtr XMLCALL
    231 	xmlOutputBufferCreateFile	(FILE *file,
    232 					 xmlCharEncodingHandlerPtr encoder);
    233 
    234 XMLPUBFUN xmlOutputBufferPtr XMLCALL
    235 	xmlOutputBufferCreateBuffer	(xmlBufferPtr buffer,
    236 					 xmlCharEncodingHandlerPtr encoder);
    237 
    238 XMLPUBFUN xmlOutputBufferPtr XMLCALL
    239 	xmlOutputBufferCreateFd		(int fd,
    240 					 xmlCharEncodingHandlerPtr encoder);
    241 
    242 XMLPUBFUN xmlOutputBufferPtr XMLCALL
    243 	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
    244 					 xmlOutputCloseCallback  ioclose,
    245 					 void *ioctx,
    246 					 xmlCharEncodingHandlerPtr encoder);
    247 
    248 XMLPUBFUN int XMLCALL
    249 	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
    250 					 int len,
    251 					 const char *buf);
    252 XMLPUBFUN int XMLCALL
    253 	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
    254 					 const char *str);
    255 XMLPUBFUN int XMLCALL
    256 	xmlOutputBufferWriteEscape	(xmlOutputBufferPtr out,
    257 					 const xmlChar *str,
    258 					 xmlCharEncodingOutputFunc escaping);
    259 
    260 XMLPUBFUN int XMLCALL
    261 	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
    262 XMLPUBFUN int XMLCALL
    263 	xmlOutputBufferClose		(xmlOutputBufferPtr out);
    264 
    265 XMLPUBFUN int XMLCALL
    266 	xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
    267 					 xmlOutputOpenCallback openFunc,
    268 					 xmlOutputWriteCallback writeFunc,
    269 					 xmlOutputCloseCallback closeFunc);
    270 
    271 xmlOutputBufferPtr
    272 	__xmlOutputBufferCreateFilename(const char *URI,
    273                               xmlCharEncodingHandlerPtr encoder,
    274                               int compression);
    275 
    276 #ifdef LIBXML_HTTP_ENABLED
    277 /*  This function only exists if HTTP support built into the library  */
    278 XMLPUBFUN void XMLCALL
    279 	xmlRegisterHTTPPostCallbacks	(void );
    280 #endif /* LIBXML_HTTP_ENABLED */
    281 
    282 #endif /* LIBXML_OUTPUT_ENABLED */
    283 
    284 XMLPUBFUN xmlParserInputPtr XMLCALL
    285 	xmlCheckHTTPInput		(xmlParserCtxtPtr ctxt,
    286 					 xmlParserInputPtr ret);
    287 
    288 /*
    289  * A predefined entity loader disabling network accesses
    290  */
    291 XMLPUBFUN xmlParserInputPtr XMLCALL
    292 	xmlNoNetExternalEntityLoader	(const char *URL,
    293 					 const char *ID,
    294 					 xmlParserCtxtPtr ctxt);
    295 
    296 /*
    297  * xmlNormalizeWindowsPath is obsolete, don't use it.
    298  * Check xmlCanonicPath in uri.h for a better alternative.
    299  */
    300 XMLPUBFUN xmlChar * XMLCALL
    301 	xmlNormalizeWindowsPath		(const xmlChar *path);
    302 
    303 XMLPUBFUN int XMLCALL
    304 	xmlCheckFilename		(const char *path);
    305 /**
    306  * Default 'file://' protocol callbacks
    307  */
    308 XMLPUBFUN int XMLCALL
    309 	xmlFileMatch 			(const char *filename);
    310 XMLPUBFUN void * XMLCALL
    311 	xmlFileOpen 			(const char *filename);
    312 XMLPUBFUN int XMLCALL
    313 	xmlFileRead 			(void * context,
    314 					 char * buffer,
    315 					 int len);
    316 XMLPUBFUN int XMLCALL
    317 	xmlFileClose 			(void * context);
    318 
    319 /**
    320  * Default 'http://' protocol callbacks
    321  */
    322 #ifdef LIBXML_HTTP_ENABLED
    323 XMLPUBFUN int XMLCALL
    324 	xmlIOHTTPMatch 			(const char *filename);
    325 XMLPUBFUN void * XMLCALL
    326 	xmlIOHTTPOpen 			(const char *filename);
    327 #ifdef LIBXML_OUTPUT_ENABLED
    328 XMLPUBFUN void * XMLCALL
    329 	xmlIOHTTPOpenW			(const char * post_uri,
    330 					 int   compression );
    331 #endif /* LIBXML_OUTPUT_ENABLED */
    332 XMLPUBFUN int XMLCALL
    333 	xmlIOHTTPRead			(void * context,
    334 					 char * buffer,
    335 					 int len);
    336 XMLPUBFUN int XMLCALL
    337 	xmlIOHTTPClose 			(void * context);
    338 #endif /* LIBXML_HTTP_ENABLED */
    339 
    340 /**
    341  * Default 'ftp://' protocol callbacks
    342  */
    343 #ifdef LIBXML_FTP_ENABLED
    344 XMLPUBFUN int XMLCALL
    345 	xmlIOFTPMatch 			(const char *filename);
    346 XMLPUBFUN void * XMLCALL
    347 	xmlIOFTPOpen 			(const char *filename);
    348 XMLPUBFUN int XMLCALL
    349 	xmlIOFTPRead			(void * context,
    350 					 char * buffer,
    351 					 int len);
    352 XMLPUBFUN int XMLCALL
    353 	xmlIOFTPClose 			(void * context);
    354 #endif /* LIBXML_FTP_ENABLED */
    355 
    356 #ifdef __cplusplus
    357 }
    358 #endif
    359 
    360 #endif /* __XML_IO_H__ */
    361