/ libxml2 / include / libxml / nanoftp.h
nanoftp.h
  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  /* Needed for portability to Windows 64 bits */
 19  #if defined(__MINGW32__) || defined(_WIN32_WCE)
 20  #include <winsock2.h>
 21  #else
 22  /**
 23   * SOCKET:
 24   *
 25   * macro used to provide portability of code to windows sockets
 26   */
 27  #define SOCKET int
 28  /**
 29   * INVALID_SOCKET:
 30   *
 31   * macro used to provide portability of code to windows sockets
 32   * the value to be used when the socket is not valid
 33   */
 34  #undef  INVALID_SOCKET
 35  #define INVALID_SOCKET (-1)
 36  #endif
 37  
 38  #ifdef __cplusplus
 39  extern "C" {
 40  #endif
 41  
 42  /**
 43   * ftpListCallback:
 44   * @userData:  user provided data for the callback
 45   * @filename:  the file name (including "->" when links are shown)
 46   * @attrib:  the attribute string
 47   * @owner:  the owner string
 48   * @group:  the group string
 49   * @size:  the file size
 50   * @links:  the link count
 51   * @year:  the year
 52   * @month:  the month
 53   * @day:  the day
 54   * @hour:  the hour
 55   * @minute:  the minute
 56   *
 57   * A callback for the xmlNanoFTPList command.
 58   * Note that only one of year and day:minute are specified.
 59   */
 60  typedef void (*ftpListCallback) (void *userData,
 61  	                         const char *filename, const char *attrib,
 62  	                         const char *owner, const char *group,
 63  				 unsigned long size, int links, int year,
 64  				 const char *month, int day, int hour,
 65  				 int minute);
 66  /**
 67   * ftpDataCallback:
 68   * @userData: the user provided context
 69   * @data: the data received
 70   * @len: its size in bytes
 71   *
 72   * A callback for the xmlNanoFTPGet command.
 73   */
 74  typedef void (*ftpDataCallback) (void *userData,
 75  				 const char *data,
 76  				 int len);
 77  
 78  /*
 79   * Init
 80   */
 81  XMLPUBFUN void XMLCALL
 82  	xmlNanoFTPInit		(void);
 83  XMLPUBFUN void XMLCALL
 84  	xmlNanoFTPCleanup	(void);
 85  
 86  /*
 87   * Creating/freeing contexts.
 88   */
 89  XMLPUBFUN void * XMLCALL
 90  	xmlNanoFTPNewCtxt	(const char *URL);
 91  XMLPUBFUN void XMLCALL
 92  	xmlNanoFTPFreeCtxt	(void * ctx);
 93  XMLPUBFUN void * XMLCALL
 94  	xmlNanoFTPConnectTo	(const char *server,
 95  				 int port);
 96  /*
 97   * Opening/closing session connections.
 98   */
 99  XMLPUBFUN void * XMLCALL
100  	xmlNanoFTPOpen		(const char *URL);
101  XMLPUBFUN int XMLCALL
102  	xmlNanoFTPConnect	(void *ctx);
103  XMLPUBFUN int XMLCALL
104  	xmlNanoFTPClose		(void *ctx);
105  XMLPUBFUN int XMLCALL
106  	xmlNanoFTPQuit		(void *ctx);
107  XMLPUBFUN void XMLCALL
108  	xmlNanoFTPScanProxy	(const char *URL);
109  XMLPUBFUN void XMLCALL
110  	xmlNanoFTPProxy		(const char *host,
111  				 int port,
112  				 const char *user,
113  				 const char *passwd,
114  				 int type);
115  XMLPUBFUN int XMLCALL
116  	xmlNanoFTPUpdateURL	(void *ctx,
117  				 const char *URL);
118  
119  /*
120   * Rather internal commands.
121   */
122  XMLPUBFUN int XMLCALL
123  	xmlNanoFTPGetResponse	(void *ctx);
124  XMLPUBFUN int XMLCALL
125  	xmlNanoFTPCheckResponse	(void *ctx);
126  
127  /*
128   * CD/DIR/GET handlers.
129   */
130  XMLPUBFUN int XMLCALL
131  	xmlNanoFTPCwd		(void *ctx,
132  				 const char *directory);
133  XMLPUBFUN int XMLCALL
134  	xmlNanoFTPDele		(void *ctx,
135  				 const char *file);
136  
137  XMLPUBFUN SOCKET XMLCALL
138  	xmlNanoFTPGetConnection	(void *ctx);
139  XMLPUBFUN int XMLCALL
140  	xmlNanoFTPCloseConnection(void *ctx);
141  XMLPUBFUN int XMLCALL
142  	xmlNanoFTPList		(void *ctx,
143  				 ftpListCallback callback,
144  				 void *userData,
145  				 const char *filename);
146  XMLPUBFUN SOCKET XMLCALL
147  	xmlNanoFTPGetSocket	(void *ctx,
148  				 const char *filename);
149  XMLPUBFUN int XMLCALL
150  	xmlNanoFTPGet		(void *ctx,
151  				 ftpDataCallback callback,
152  				 void *userData,
153  				 const char *filename);
154  XMLPUBFUN int XMLCALL
155  	xmlNanoFTPRead		(void *ctx,
156  				 void *dest,
157  				 int len);
158  
159  #ifdef __cplusplus
160  }
161  #endif
162  #endif /* LIBXML_FTP_ENABLED */
163  #endif /* __NANO_FTP_H__ */