nanoftp

nanoftp - minimal FTP implementation

minimal FTP implementation allowing to fetch resources like external subset.

Author(s): Daniel Veillard

Synopsis

#define INVALID_SOCKET;
#define SOCKET;
int	xmlNanoFTPQuit			(void * ctx);
int	xmlNanoFTPClose			(void * ctx);
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); int xmlNanoFTPCloseConnection (void * ctx); void xmlNanoFTPProxy (const char * host,
int port,
const char * user,
const char * passwd,
int type); int xmlNanoFTPUpdateURL (void * ctx,
const char * URL); SOCKET xmlNanoFTPGetConnection (void * ctx); int xmlNanoFTPDele (void * ctx,
const char * file); void * xmlNanoFTPNewCtxt (const char * URL); int xmlNanoFTPCheckResponse (void * ctx); void xmlNanoFTPScanProxy (const char * URL); typedef void ftpDataCallback (void * userData,
const char * data,
int len); int xmlNanoFTPGetResponse (void * ctx); int xmlNanoFTPCwd (void * ctx,
const char * directory); void xmlNanoFTPInit (void); void * xmlNanoFTPConnectTo (const char * server,
int port); int xmlNanoFTPList (void * ctx,
ftpListCallback callback,
void * userData,
const char * filename); void * xmlNanoFTPOpen (const char * URL); int xmlNanoFTPConnect (void * ctx); SOCKET xmlNanoFTPGetSocket (void * ctx,
const char * filename); int xmlNanoFTPGet (void * ctx,
ftpDataCallback callback,
void * userData,
const char * filename); int xmlNanoFTPRead (void * ctx,
void * dest,
int len); void xmlNanoFTPFreeCtxt (void * ctx); void xmlNanoFTPCleanup (void);

Description

Details

Macro INVALID_SOCKET

#define INVALID_SOCKET;

macro used to provide portability of code to windows sockets the value to be used when the socket is not valid


Macro SOCKET

#define SOCKET;

macro used to provide portability of code to windows sockets


Function type ftpDataCallback

void	ftpDataCallback			(void * userData, 
const char * data,
int len)

A callback for the xmlNanoFTPGet command.

userData:the user provided context
data:the data received
len:its size in bytes

Function type ftpListCallback

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)

A callback for the xmlNanoFTPList command. Note that only one of year and day:minute are specified.

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










xmlNanoFTPGet ()

int	xmlNanoFTPGet			(void * ctx, 
ftpDataCallback callback,
void * userData,
const char * filename)

Fetch the given file from the server. All data are passed back in the callbacks. The last callback has a size of 0 block.

ctx:an FTP context
callback:the user callback
userData:the user callback data
filename:the file to retrieve
Returns:-1 incase of error, 0 otherwise

xmlNanoFTPGetConnection ()

SOCKET	xmlNanoFTPGetConnection		(void * ctx)

Try to open a data connection to the server. Currently only passive mode is supported.

ctx:an FTP context
Returns:-1 incase of error, 0 otherwise


xmlNanoFTPGetSocket ()

SOCKET	xmlNanoFTPGetSocket		(void * ctx, 
const char * filename)

Initiate fetch of the given file from the server.

ctx:an FTP context
filename:the file to retrieve (or NULL if path is in context).
Returns:the socket for the data connection, or <0 in case of error


xmlNanoFTPList ()

int	xmlNanoFTPList			(void * ctx, 
ftpListCallback callback,
void * userData,
const char * filename)

Do a listing on the server. All files info are passed back in the callbacks.

ctx:an FTP context
callback:the user callback
userData:the user callback data
filename:optional files to list
Returns:-1 incase of error, 0 otherwise