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 19extern "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 */ 40typedef 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 */ 54typedef void (*ftpDataCallback) (void *userData, 55 const char *data, 56 int len); 57 58/* 59 * Init 60 */ 61XMLPUBFUN void XMLCALL 62 xmlNanoFTPInit (void); 63XMLPUBFUN void XMLCALL 64 xmlNanoFTPCleanup (void); 65 66/* 67 * Creating/freeing contexts. 68 */ 69XMLPUBFUN void * XMLCALL 70 xmlNanoFTPNewCtxt (const char *URL); 71XMLPUBFUN void XMLCALL 72 xmlNanoFTPFreeCtxt (void * ctx); 73XMLPUBFUN void * XMLCALL 74 xmlNanoFTPConnectTo (const char *server, 75 int port); 76/* 77 * Opening/closing session connections. 78 */ 79XMLPUBFUN void * XMLCALL 80 xmlNanoFTPOpen (const char *URL); 81XMLPUBFUN int XMLCALL 82 xmlNanoFTPConnect (void *ctx); 83XMLPUBFUN int XMLCALL 84 xmlNanoFTPClose (void *ctx); 85XMLPUBFUN int XMLCALL 86 xmlNanoFTPQuit (void *ctx); 87XMLPUBFUN void XMLCALL 88 xmlNanoFTPScanProxy (const char *URL); 89XMLPUBFUN void XMLCALL 90 xmlNanoFTPProxy (const char *host, 91 int port, 92 const char *user, 93 const char *passwd, 94 int type); 95XMLPUBFUN int XMLCALL 96 xmlNanoFTPUpdateURL (void *ctx, 97 const char *URL); 98 99/* 100 * Rather internal commands. 101 */ 102XMLPUBFUN int XMLCALL 103 xmlNanoFTPGetResponse (void *ctx); 104XMLPUBFUN int XMLCALL 105 xmlNanoFTPCheckResponse (void *ctx); 106 107/* 108 * CD/DIR/GET handlers. 109 */ 110XMLPUBFUN int XMLCALL 111 xmlNanoFTPCwd (void *ctx, 112 const char *directory); 113XMLPUBFUN int XMLCALL 114 xmlNanoFTPDele (void *ctx, 115 const char *file); 116 117XMLPUBFUN int XMLCALL 118 xmlNanoFTPGetConnection (void *ctx); 119XMLPUBFUN int XMLCALL 120 xmlNanoFTPCloseConnection(void *ctx); 121XMLPUBFUN int XMLCALL 122 xmlNanoFTPList (void *ctx, 123 ftpListCallback callback, 124 void *userData, 125 const char *filename); 126XMLPUBFUN int XMLCALL 127 xmlNanoFTPGetSocket (void *ctx, 128 const char *filename); 129XMLPUBFUN int XMLCALL 130 xmlNanoFTPGet (void *ctx, 131 ftpDataCallback callback, 132 void *userData, 133 const char *filename); 134XMLPUBFUN 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