![]() |
![]() |
![]() |
![]() |
libxml2 Reference Manual |
---|
nanoftp - minimal FTP implementation
minimal FTP implementation allowing to fetch resources like external subset.
Author(s): Daniel Veillard
#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);
#define INVALID_SOCKET;
macro used to provide portability of code to windows sockets the value to be used when the socket is not valid
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 |
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 |
int xmlNanoFTPCheckResponse (void * ctx)
Check if there is a response from the FTP server after a command.
ctx: | an FTP context |
Returns: | the code number, or 0 |
void xmlNanoFTPCleanup (void)
Cleanup the FTP protocol layer. This cleanup proxy information.
int xmlNanoFTPClose (void * ctx)
Close the connection and both control and transport
ctx: | an FTP context |
Returns: | -1 in case of error, 0 otherwise |
int xmlNanoFTPCloseConnection (void * ctx)
Close the data connection from the server
ctx: | an FTP context |
Returns: | -1 in case of error, 0 otherwise |
int xmlNanoFTPConnect (void * ctx)
Tries to open a control connection
ctx: | an FTP context |
Returns: | -1 in case of error, 0 otherwise |
void * xmlNanoFTPConnectTo (const char * server,
int port)
Tries to open a control connection to the given server/port
server: | an FTP server name |
port: | the port (use 21 if 0) |
Returns: | an fTP context or NULL if it failed |
int xmlNanoFTPCwd (void * ctx,
const char * directory)
Tries to change the remote directory
ctx: | an FTP context |
directory: | a directory on the server |
Returns: | -1 in case of error, 1 if CWD worked, 0 if it failed |
int xmlNanoFTPDele (void * ctx,
const char * file)
Tries to delete an item (file or directory) from server
ctx: | an FTP context |
file: | a file or directory on the server |
Returns: | -1 in case of error, 1 if DELE worked, 0 if it failed |
void xmlNanoFTPFreeCtxt (void * ctx)
Frees the context after closing the connection.
ctx: | an FTP context |
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 in case of error, 0 otherwise |
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 in case of error, 0 otherwise |
int xmlNanoFTPGetResponse (void * ctx)
Get the response from the FTP server after a command.
ctx: | an FTP context |
Returns: | the code number |
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 |
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 in case of error, 0 otherwise |
void * xmlNanoFTPNewCtxt (const char * URL)
Allocate and initialize a new FTP context.
URL: | The URL used to initialize the context |
Returns: | an FTP context or NULL in case of error. |
void * xmlNanoFTPOpen (const char * URL)
Start to fetch the given ftp:// resource
URL: | the URL to the resource |
Returns: | an FTP context, or NULL |
void xmlNanoFTPProxy (const char * host,
int port,
const char * user,
const char * passwd,
int type)
host: | the proxy host name |
port: | the proxy port |
user: | the proxy user name |
passwd: | the proxy password |
type: | the type of proxy 1 for using SITE, 2 for USER a@b |
int xmlNanoFTPQuit (void * ctx)
Send a QUIT command to the server
ctx: | an FTP context |
Returns: | -1 in case of error, 0 otherwise |
int xmlNanoFTPRead (void * ctx,
void * dest,
int len)
ctx: | the FTP context |
dest: | a buffer |
len: | the buffer length |
Returns: | the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error. |
void xmlNanoFTPScanProxy (const char * URL)
URL: | The proxy URL used to initialize the proxy context |
int xmlNanoFTPUpdateURL (void * ctx,
const char * URL)
ctx: | an FTP context |
URL: | The URL used to update the context |
Returns: | 0 if Ok, -1 in case of error (other host). |