Home | History | Annotate | Download | only in libxml
      1 /*
      2  * Summary: minimal FTP implementation
      3  * Description: minimal FTP implementation allowing to fetch resources
      4  *              like external subset.
      5  *
      6  * Copy: See Copyright for the status of this software.
      7  *
      8  * Author: Daniel Veillard
      9  */
     10 
     11 #ifndef __NANO_FTP_H__
     12 #define __NANO_FTP_H__
     13 
     14 #include <libxml/xmlversion.h>
     15 
     16 #ifdef LIBXML_FTP_ENABLED
     17 
     18 #ifdef __cplusplus
     19 extern "C" {
     20 #endif
     21 
     22 /**
     23  * ftpListCallback:
     24  * @userData:  user provided data for the callback
     25  * @filename:  the file name (including "->" when links are shown)
     26  * @attrib:  the attribute string
     27  * @owner:  the owner string
     28  * @group:  the group string
     29  * @size:  the file size
     30  * @links:  the link count
     31  * @year:  the year
     32  * @month:  the month
     33  * @day:  the day
     34  * @hour:  the hour
     35  * @minute:  the minute
     36  *
     37  * A callback for the xmlNanoFTPList command.
     38  * Note that only one of year and day:minute are specified.
     39  */
     40 typedef void (*ftpListCallback) (void *userData,
     41 	                         const char *filename, const char *attrib,
     42 	                         const char *owner, const char *group,
     43 				 unsigned long size, int links, int year,
     44 				 const char *month, int day, int hour,
     45 				 int minute);
     46 /**
     47  * ftpDataCallback:
     48  * @userData: the user provided context
     49  * @data: the data received
     50  * @len: its size in bytes
     51  *
     52  * A callback for the xmlNanoFTPGet command.
     53  */
     54 typedef void (*ftpDataCallback) (void *userData,
     55 				 const char *data,
     56 				 int len);
     57 
     58 /*
     59  * Init
     60  */
     61 XMLPUBFUN void XMLCALL
     62 	xmlNanoFTPInit		(void);
     63 XMLPUBFUN void XMLCALL
     64 	xmlNanoFTPCleanup	(void);
     65 
     66 /*
     67  * Creating/freeing contexts.
     68  */
     69 XMLPUBFUN void * XMLCALL
     70 	xmlNanoFTPNewCtxt	(const char *URL);
     71 XMLPUBFUN void XMLCALL
     72 	xmlNanoFTPFreeCtxt	(void * ctx);
     73 XMLPUBFUN void * XMLCALL
     74 	xmlNanoFTPConnectTo	(const char *server,
     75 				 int port);
     76 /*
     77  * Opening/closing session connections.
     78  */
     79 XMLPUBFUN void * XMLCALL
     80 	xmlNanoFTPOpen		(const char *URL);
     81 XMLPUBFUN int XMLCALL
     82 	xmlNanoFTPConnect	(void *ctx);
     83 XMLPUBFUN int XMLCALL
     84 	xmlNanoFTPClose		(void *ctx);
     85 XMLPUBFUN int XMLCALL
     86 	xmlNanoFTPQuit		(void *ctx);
     87 XMLPUBFUN void XMLCALL
     88 	xmlNanoFTPScanProxy	(const char *URL);
     89 XMLPUBFUN void XMLCALL
     90 	xmlNanoFTPProxy		(const char *host,
     91 				 int port,
     92 				 const char *user,
     93 				 const char *passwd,
     94 				 int type);
     95 XMLPUBFUN int XMLCALL
     96 	xmlNanoFTPUpdateURL	(void *ctx,
     97 				 const char *URL);
     98 
     99 /*
    100  * Rather internal commands.
    101  */
    102 XMLPUBFUN int XMLCALL
    103 	xmlNanoFTPGetResponse	(void *ctx);
    104 XMLPUBFUN int XMLCALL
    105 	xmlNanoFTPCheckResponse	(void *ctx);
    106 
    107 /*
    108  * CD/DIR/GET handlers.
    109  */
    110 XMLPUBFUN int XMLCALL
    111 	xmlNanoFTPCwd		(void *ctx,
    112 				 const char *directory);
    113 XMLPUBFUN int XMLCALL
    114 	xmlNanoFTPDele		(void *ctx,
    115 				 const char *file);
    116 
    117 XMLPUBFUN int XMLCALL
    118 	xmlNanoFTPGetConnection	(void *ctx);
    119 XMLPUBFUN int XMLCALL
    120 	xmlNanoFTPCloseConnection(void *ctx);
    121 XMLPUBFUN int XMLCALL
    122 	xmlNanoFTPList		(void *ctx,
    123 				 ftpListCallback callback,
    124 				 void *userData,
    125 				 const char *filename);
    126 XMLPUBFUN int XMLCALL
    127 	xmlNanoFTPGetSocket	(void *ctx,
    128 				 const char *filename);
    129 XMLPUBFUN int XMLCALL
    130 	xmlNanoFTPGet		(void *ctx,
    131 				 ftpDataCallback callback,
    132 				 void *userData,
    133 				 const char *filename);
    134 XMLPUBFUN int XMLCALL
    135 	xmlNanoFTPRead		(void *ctx,
    136 				 void *dest,
    137 				 int len);
    138 
    139 #ifdef __cplusplus
    140 }
    141 #endif
    142 #endif /* LIBXML_FTP_ENABLED */
    143 #endif /* __NANO_FTP_H__ */
    144