| 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(_WIN32) && !defined(__CYGWIN__) | 
|---|
| 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__ */ | 
|---|
| 164 |  | 
|---|