#

## Module nanoftp from libxml2

API Menu

- Main Menu
- Developer Menu
- Code Examples
- API Menu
- Parser API
- Tree API
- Reader API
- XML Guidelines
- ChangeLog

API Indexes

- Alphabetic
- Constructors
- Functions/Types
- Modules
- Symbols

Related links

- Mail archive
- XSLT libxslt
- DOM gdome2
- XML-DSig xmlsec
- FTP
- Windows binaries
- Solaris binaries
- MacOsX binaries
- lxml Python bindings
- Perl bindings
- C++ bindings
- PHP bindings
- Pascal bindings
- Ruby bindings
- Tcl bindings
- Bug Tracker

minimal FTP implementation allowing to fetch resources like external subset.

## Table of Contents

    #define INVALID_SOCKET

    #define SOCKET

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

    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)

    int	xmlNanoFTPCheckResponse		(void * ctx)

    void	xmlNanoFTPCleanup		(void)

    int	xmlNanoFTPClose			(void * ctx)

    int	xmlNanoFTPCloseConnection	(void * ctx)

    int	xmlNanoFTPConnect		(void * ctx)

    void *	xmlNanoFTPConnectTo		(const char * server,
    					 int port)

    int	xmlNanoFTPCwd			(void * ctx,
    					 const char * directory)

    int	xmlNanoFTPDele			(void * ctx,
    					 const char * file)

    void	xmlNanoFTPFreeCtxt		(void * ctx)

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

    SOCKET	xmlNanoFTPGetConnection		(void * ctx)

    int	xmlNanoFTPGetResponse		(void * ctx)

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

    void	xmlNanoFTPInit			(void)

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

    void *	xmlNanoFTPNewCtxt		(const char * URL)

    void *	xmlNanoFTPOpen			(const char * URL)

    void	xmlNanoFTPProxy			(const char * host,
    					 int port,
    					 const char * user,
    					 const char * passwd,
    					 int type)

    int	xmlNanoFTPQuit			(void * ctx)

    int	xmlNanoFTPRead			(void * ctx,
    					 void * dest,
    					 int len)

    void	xmlNanoFTPScanProxy		(const char * URL)

    int	xmlNanoFTPUpdateURL		(void * ctx,
    					 const char * URL)

## Description

### 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

    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

    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

### Function: xmlNanoFTPCheckResponse

    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

### Function: xmlNanoFTPCleanup

    void	xmlNanoFTPCleanup		(void)

Cleanup the FTP protocol layer. This cleanup proxy information.

### Function: xmlNanoFTPClose

    int	xmlNanoFTPClose			(void * ctx)

Close the connection and both control and transport

`ctx`: | an FTP context
`Returns`: | -1 in case of error, 0 otherwise

### Function: xmlNanoFTPCloseConnection

    int	xmlNanoFTPCloseConnection	(void * ctx)

Close the data connection from the server

`ctx`: | an FTP context
`Returns`: | -1 in case of error, 0 otherwise

### Function: xmlNanoFTPConnect

    int	xmlNanoFTPConnect		(void * ctx)

Tries to open a control connection

`ctx`: | an FTP context
`Returns`: | -1 in case of error, 0 otherwise

### Function: xmlNanoFTPConnectTo

    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

### Function: xmlNanoFTPCwd

    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

### Function: xmlNanoFTPDele

    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

### Function: xmlNanoFTPFreeCtxt

    void	xmlNanoFTPFreeCtxt		(void * ctx)

Frees the context after closing the connection.

`ctx`: | an FTP context

### Function: 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 in case of error, 0 otherwise

### Function: 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 in case of error, 0 otherwise

### Function: xmlNanoFTPGetResponse

    int	xmlNanoFTPGetResponse		(void * ctx)

Get the response from the FTP server after a command.

`ctx`: | an FTP context
`Returns`: | the code number

### Function: 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

### Function: xmlNanoFTPInit

    void	xmlNanoFTPInit			(void)

Initialize the FTP protocol layer. Currently it just checks for proxy information, and get the hostname

### Function: 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 in case of error, 0 otherwise

### Function: xmlNanoFTPNewCtxt

    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.

### Function: xmlNanoFTPOpen

    void *	xmlNanoFTPOpen			(const char * URL)

Start to fetch the given ftp:// resource

`URL`: | the URL to the resource
`Returns`: | an FTP context, or NULL

### Function: xmlNanoFTPProxy

    void	xmlNanoFTPProxy			(const char * host,
    					 int port,
    					 const char * user,
    					 const char * passwd,
    					 int type)

Setup the FTP proxy information. This can also be done by using ftp_proxy ftp_proxy_user and ftp_proxy_password environment variables.

`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

### Function: xmlNanoFTPQuit

    int	xmlNanoFTPQuit			(void * ctx)

Send a QUIT command to the server

`ctx`: | an FTP context
`Returns`: | -1 in case of error, 0 otherwise

### Function: xmlNanoFTPRead

    int	xmlNanoFTPRead			(void * ctx,
    					 void * dest,
    					 int len)

This function tries to read @len bytes from the existing FTP connection and saves them in @dest. This is a blocking call.

`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.

### Function: xmlNanoFTPScanProxy

    void	xmlNanoFTPScanProxy		(const char * URL)

(Re)Initialize the FTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like ftp://myproxy/ or ftp://myproxy:3128/ A NULL URL cleans up proxy information.

`URL`: | The proxy URL used to initialize the proxy context

### Function: xmlNanoFTPUpdateURL

    int	xmlNanoFTPUpdateURL		(void * ctx,
    					 const char * URL)

Update an FTP context by parsing the URL and finding new path it indicates. If there is an error in the protocol, hostname, port or other information, the error is raised. It indicates a new connection has to be established.

`ctx`: | an FTP context
`URL`: | The URL used to update the context
`Returns`: | 0 if Ok, -1 in case of error (other host).

Daniel Veillard