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