doubango/thirdparties/common/include/libxml/nanoftp.h
c732d49e
 /*
  * Summary: minimal FTP implementation
  * Description: minimal FTP implementation allowing to fetch resources
  *              like external subset.
  *
  * Copy: See Copyright for the status of this software.
  *
  * Author: Daniel Veillard
  */
 
 #ifndef __NANO_FTP_H__
 #define __NANO_FTP_H__
 
 #include <libxml/xmlversion.h>
 
 #ifdef LIBXML_FTP_ENABLED
 
 /* Needed for portability to Windows 64 bits */
 #if defined(__MINGW32__) || defined(_WIN32_WCE)
 #include <winsock2.h>
 #else
 /**
  * SOCKET:
  *
  * macro used to provide portability of code to windows sockets
  */
 #define SOCKET int
 /**
  * INVALID_SOCKET:
  *
  * macro used to provide portability of code to windows sockets
  * the value to be used when the socket is not valid
  */
 #undef  INVALID_SOCKET
 #define INVALID_SOCKET (-1)
 #endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /**
  * ftpListCallback:
  * @userData:  user provided data for the callback
  * @filename:  the file name (including "->" when links are shown)
  * @attrib:  the attribute string
  * @owner:  the owner string
  * @group:  the group string
  * @size:  the file size
  * @links:  the link count
  * @year:  the year
  * @month:  the month
  * @day:  the day
  * @hour:  the hour
  * @minute:  the minute
  *
  * A callback for the xmlNanoFTPList command.
  * Note that only one of year and day:minute are specified.
  */
 typedef void (*ftpListCallback) (void *userData,
 	                         const char *filename, const char *attrib,
 	                         const char *owner, const char *group,
 				 unsigned long size, int links, int year,
 				 const char *month, int day, int hour,
 				 int minute);
 /**
  * ftpDataCallback:
  * @userData: the user provided context
  * @data: the data received
  * @len: its size in bytes
  *
  * A callback for the xmlNanoFTPGet command.
  */
 typedef void (*ftpDataCallback) (void *userData,
 				 const char *data,
 				 int len);
 
 /*
  * Init
  */
 XMLPUBFUN void XMLCALL
 	xmlNanoFTPInit		(void);
 XMLPUBFUN void XMLCALL
 	xmlNanoFTPCleanup	(void);
 
 /*
  * Creating/freeing contexts.
  */
 XMLPUBFUN void * XMLCALL
 	xmlNanoFTPNewCtxt	(const char *URL);
 XMLPUBFUN void XMLCALL
 	xmlNanoFTPFreeCtxt	(void * ctx);
 XMLPUBFUN void * XMLCALL
 	xmlNanoFTPConnectTo	(const char *server,
 				 int port);
 /*
  * Opening/closing session connections.
  */
 XMLPUBFUN void * XMLCALL
 	xmlNanoFTPOpen		(const char *URL);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPConnect	(void *ctx);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPClose		(void *ctx);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPQuit		(void *ctx);
 XMLPUBFUN void XMLCALL
 	xmlNanoFTPScanProxy	(const char *URL);
 XMLPUBFUN void XMLCALL
 	xmlNanoFTPProxy		(const char *host,
 				 int port,
 				 const char *user,
 				 const char *passwd,
 				 int type);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPUpdateURL	(void *ctx,
 				 const char *URL);
 
 /*
  * Rather internal commands.
  */
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPGetResponse	(void *ctx);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPCheckResponse	(void *ctx);
 
 /*
  * CD/DIR/GET handlers.
  */
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPCwd		(void *ctx,
 				 const char *directory);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPDele		(void *ctx,
 				 const char *file);
 
 XMLPUBFUN SOCKET XMLCALL
 	xmlNanoFTPGetConnection	(void *ctx);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPCloseConnection(void *ctx);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPList		(void *ctx,
 				 ftpListCallback callback,
 				 void *userData,
 				 const char *filename);
 XMLPUBFUN SOCKET XMLCALL
 	xmlNanoFTPGetSocket	(void *ctx,
 				 const char *filename);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPGet		(void *ctx,
 				 ftpDataCallback callback,
 				 void *userData,
 				 const char *filename);
 XMLPUBFUN int XMLCALL
 	xmlNanoFTPRead		(void *ctx,
 				 void *dest,
 				 int len);
 
 #ifdef __cplusplus
 }
 #endif
 #endif /* LIBXML_FTP_ENABLED */
 #endif /* __NANO_FTP_H__ */